Comments (7)
Thanks for reporting, I don't see this failure with vcs/irun. Is there any more information about the failure? Like the conflict constraint cannot be solved?
from riscv-dv.
BTW, looks like you are simulating with your own testlist_work.yaml. Can you share the setting of the failed test?
from riscv-dv.
my own testlist_yaml is just a copy so I dont touch the original when I make changes. the error appears when I use the original testlist.yaml with no changes.
in a good run I see (with the +directed_instr_0=riscv_load_store_rand_instr_stream,4 line in testlist.yaml removed which somehow makes things run ok)
...
UVM_INFO ./test/riscv_instr_base_test.sv(110) @ 0: uvm_test_top [uvm_test_top] riscv_instr_gen_config is randomized:
-------------------------------------------------------------
Name Type Size Value
-------------------------------------------------------------
cfg riscv_instr_gen_config - @384
main_program_instr_cnt integral 32 'h11
sub_program_instr_cnt sa(integral) 5 -
[0] integral 32 'ha
[1] integral 32 'hf
[2] integral 32 'hb
[3] integral 32 'h13
[4] integral 32 'h1c
-------------------------------------------------------------
UVM_INFO ./test/riscv_instr_base_test.sv(101) @ 0: uvm_test_top [uvm_test_top] All directed instruction is applied
UVM_INFO ./src/riscv_asm_program_gen.sv(227) @ 0: reporter [asm_gen] sub program name: sub
UVM_INFO ./src/riscv_instr_sequence.sv(77) @ 0: reporter@@sub_1 [sub_1] Start generating 10 instruction
UVM_INFO ./src/riscv_instr_sequence.sv(86) @ 0: reporter@@sub_1 [sub_1] Finishing instruction generation
UVM_INFO ./src/riscv_asm_program_gen.sv(227) @ 0: reporter [asm_gen] sub program name: sub
UVM_INFO ./src/riscv_instr_sequence.sv(77) @ 0: reporter@@sub_2 [sub_2] Start generating 15 instruction
UVM_INFO ./src/riscv_instr_sequence.sv(86) @ 0: reporter@@sub_2 [sub_2] Finishing instruction generation
UVM_INFO ./src/riscv_asm_program_gen.sv(227) @ 0: reporter [asm_gen] sub program name: sub
UVM_INFO ./src/riscv_instr_sequence.sv(77) @ 0: reporter@@sub_3 [sub_3] Start generating 11 instruction
UVM_INFO ./src/riscv_instr_sequence.sv(86) @ 0: reporter@@sub_3 [sub_3] Finishing instruction generation
UVM_INFO ./src/riscv_asm_program_gen.sv(227) @ 0: reporter [asm_gen] sub program name: sub
UVM_INFO ./src/riscv_instr_sequence.sv(77) @ 0: reporter@@sub_4 [sub_4] Start generating 19 instruction
UVM_INFO ./src/riscv_instr_sequence.sv(86) @ 0: reporter@@sub_4 [sub_4] Finishing instruction generation
UVM_INFO ./src/riscv_asm_program_gen.sv(227) @ 0: reporter [asm_gen] sub program name: sub
UVM_INFO ./src/riscv_instr_sequence.sv(77) @ 0: reporter@@sub_5 [sub_5] Start generating 28 instruction
UVM_INFO ./src/riscv_instr_sequence.sv(86) @ 0: reporter@@sub_5 [sub_5] Finishing instruction generation
...
but in the bad run I see: (with the yaml section being:
- test: riscv_rand_instr_test
description: >
Random instruction stress test
iterations: 2
gen_test: riscv_instr_base_test
gen_opts: >
+instr_cnt=100
+num_of_sub_program=5
+directed_instr_0=riscv_load_store_rand_instr_stream,4
+directed_instr_1=riscv_loop_instr,4
+directed_instr_2=riscv_hazard_instr_stream,4
+directed_instr_3=riscv_load_store_hazard_instr_stream,4
+directed_instr_4=riscv_cache_line_stress_instr_stream,4
+directed_instr_5=riscv_multi_page_load_store_instr_stream,4
rtl_test: core_base_test
I see:
...
UVM_INFO ./test/riscv_instr_base_test.sv(110) @ 0: uvm_test_top [uvm_test_top] riscv_instr_gen_config is randomized:
-------------------------------------------------------------
Name Type Size Value
-------------------------------------------------------------
cfg riscv_instr_gen_config - @384
main_program_instr_cnt integral 32 'h11
sub_program_instr_cnt sa(integral) 5 -
[0] integral 32 'ha
[1] integral 32 'hf
[2] integral 32 'hb
[3] integral 32 'h13
[4] integral 32 'h1c
-------------------------------------------------------------
UVM_INFO ./test/riscv_instr_base_test.sv(80) @ 0: uvm_test_top [uvm_test_top] Got directed instr[0] riscv_load_store_rand_instr_stream, ratio = 4/1000
UVM_INFO ./test/riscv_instr_base_test.sv(80) @ 0: uvm_test_top [uvm_test_top] Got directed instr[1] riscv_loop_instr, ratio = 4/1000
UVM_INFO ./test/riscv_instr_base_test.sv(80) @ 0: uvm_test_top [uvm_test_top] Got directed instr[2] riscv_hazard_instr_stream, ratio = 4/1000
UVM_INFO ./test/riscv_instr_base_test.sv(80) @ 0: uvm_test_top [uvm_test_top] Got directed instr[3] riscv_load_store_hazard_instr_stream, ratio = 4/1000
UVM_INFO ./test/riscv_instr_base_test.sv(80) @ 0: uvm_test_top [uvm_test_top] Got directed instr[4] riscv_cache_line_stress_instr_stream, ratio = 4/1000
UVM_INFO ./test/riscv_instr_base_test.sv(80) @ 0: uvm_test_top [uvm_test_top] Got directed instr[5] riscv_multi_page_load_store_instr_stream, ratio = 4/1000
UVM_INFO ./test/riscv_instr_base_test.sv(101) @ 0: uvm_test_top [uvm_test_top] All directed instruction is applied
UVM_INFO ./src/riscv_asm_program_gen.sv(227) @ 0: reporter [asm_gen] sub program name: sub
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_cache_line_stress_instr_stream 0/10 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_hazard_instr_stream 0/10 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_load_store_hazard_instr_stream 0/10 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_load_store_rand_instr_stream 0/10 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_loop_instr 0/10 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_multi_page_load_store_instr_stream 0/10 times
UVM_INFO ./src/riscv_instr_sequence.sv(77) @ 0: reporter@@sub_1 [sub_1] Start generating 10 instruction
UVM_INFO ./src/riscv_instr_sequence.sv(86) @ 0: reporter@@sub_1 [sub_1] Finishing instruction generation
UVM_INFO ./src/riscv_asm_program_gen.sv(227) @ 0: reporter [asm_gen] sub program name: sub
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_cache_line_stress_instr_stream 0/15 times
...
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_loop_instr 0/19 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_multi_page_load_store_instr_stream 0/19 times
UVM_INFO ./src/riscv_instr_sequence.sv(77) @ 0: reporter@@sub_4 [sub_4] Start generating 19 instruction
UVM_INFO ./src/riscv_instr_sequence.sv(86) @ 0: reporter@@sub_4 [sub_4] Finishing instruction generation
UVM_INFO ./src/riscv_asm_program_gen.sv(227) @ 0: reporter [asm_gen] sub program name: sub
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_cache_line_stress_instr_stream 0/28 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_hazard_instr_stream 0/28 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_load_store_hazard_instr_stream 0/28 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_load_store_rand_instr_stream 0/28 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_loop_instr 0/28 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_multi_page_load_store_instr_stream 0/28 times
UVM_INFO ./src/riscv_instr_sequence.sv(77) @ 0: reporter@@sub_5 [sub_5] Start generating 28 instruction
UVM_INFO ./src/riscv_instr_sequence.sv(86) @ 0: reporter@@sub_5 [sub_5] Finishing instruction generation
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_cache_line_stress_instr_stream 1/17 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_hazard_instr_stream 1/17 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_load_store_hazard_instr_stream 1/17 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_load_store_rand_instr_stream 1/17 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_loop_instr 1/17 times
UVM_INFO ./src/riscv_asm_program_gen.sv(1067) @ 0: reporter [asm_gen] Insert directed instr stream riscv_multi_page_load_store_instr_stream 1/17 times
UVM_FATAL ./src/riscv_asm_program_gen.sv(1079) @ 0: reporter [asm_gen] Check failed (new_instr_stream.randomize()) Randomization failed!
UVM_INFO verilog_src/uvm-1.2/src/base/uvm_report_server.svh(847) @ 0: reporter [UVM/REPORT/SERVER]
and so the output is different
thanks.
from riscv-dv.
Seem like the instr_cnt is set to 100, which is pretty small. This could cause some failure as each sub-program has some minimum size constraint. Can you change it to 500 to see if the problem is solved?
from riscv-dv.
Actually I simulated with your setting to generate 100 tests, and no constraint failure is observed. Might be something not working well with modelsim.
from riscv-dv.
Simon, does the simulator give more information beyond below message? The current information is not enough to debug what goes wrong.
UVM_FATAL ./src/riscv_asm_program_gen.sv(1079) @ 0: reporter [asm_gen] Check failed (new_instr_stream.randomize()) Randomization failed!
from riscv-dv.
I am closing this bug for inactivity, feel free to reopen it or file a new bug if you still see this issue.
from riscv-dv.
Related Issues (20)
- The spike simulation gets stuck in an endless loop HOT 2
- rv64gc failing spike due to exception trap_store_address_misaligned HOT 2
- riscv-dv breaks with riscv64-unknown-elf-gcc version tags 2023.04.18 and up HOT 5
- spike error:free(): invalid pointer: 0xxxxxxx
- Circular dependency within source files
- Error "SolveBeforeMustBeRand" while Elaborating with Dsim tool HOT 2
- Error: unrecognized opcode `csrr x5,0xf14', extension `zicsr' required HOT 8
- Error: illegal operands `sd s11,sub_4_stack_p(s5)'
- How to connect the test to my SV design file, and How do I get the feedback that the test has passed or failed? HOT 1
- Access Exception error while running spike for rv64imac instructions
- can't do riscv_csr_test HOT 1
- How to test Atomic Extension? HOT 3
- Guide lines to enable virtual address translation?
- Can't do S-mode test ( No delegation ) HOT 2
- Randomize CSR in main HOT 6
- Initial mret (from init_supervisor_mode) sends processor to untranslated address
- Request for detailed documentation HOT 1
- Can riscv-dv used with ucb rocket core/boom core? HOT 2
- Can I run this without install any external library?
- Error: illegal operands `sd s11,sub_4_stack_p(s5)'
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from riscv-dv.