📄 cpu_test_bench.v
字号:
if (reset_n)
if (^(E_valid) === 1'bx)
begin
$write("%0d ns: ERROR: cpu_test_bench/E_valid is 'x'\n", $time);
$stop;
end
end
always @(posedge clk)
begin
if (reset_n)
if (^(M_valid) === 1'bx)
begin
$write("%0d ns: ERROR: cpu_test_bench/M_valid is 'x'\n", $time);
$stop;
end
end
always @(posedge clk or negedge reset_n)
begin
if (reset_n == 0)
begin
end
else if (M_valid & M_en & M_wr_dst_reg)
if (^(M_wr_data_unfiltered) === 1'bx)
begin
$write("%0d ns: WARNING: cpu_test_bench/M_wr_data_unfiltered is 'x'\n", $time);
end
end
always @(posedge clk)
begin
if (reset_n)
if (^(i_read) === 1'bx)
begin
$write("%0d ns: ERROR: cpu_test_bench/i_read is 'x'\n", $time);
$stop;
end
end
always @(posedge clk or negedge reset_n)
begin
if (reset_n == 0)
begin
end
else if (i_read)
if (^(i_address) === 1'bx)
begin
$write("%0d ns: ERROR: cpu_test_bench/i_address is 'x'\n", $time);
$stop;
end
end
always @(posedge clk)
begin
if (reset_n)
if (^(i_readdatavalid) === 1'bx)
begin
$write("%0d ns: ERROR: cpu_test_bench/i_readdatavalid is 'x'\n", $time);
$stop;
end
end
always @(posedge clk)
begin
if (reset_n)
if (^(d_write) === 1'bx)
begin
$write("%0d ns: ERROR: cpu_test_bench/d_write is 'x'\n", $time);
$stop;
end
end
always @(posedge clk or negedge reset_n)
begin
if (reset_n == 0)
begin
end
else if (d_write)
if (^(d_byteenable) === 1'bx)
begin
$write("%0d ns: ERROR: cpu_test_bench/d_byteenable is 'x'\n", $time);
$stop;
end
end
always @(posedge clk or negedge reset_n)
begin
if (reset_n == 0)
begin
end
else if (d_write | d_read)
if (^(d_address) === 1'bx)
begin
$write("%0d ns: ERROR: cpu_test_bench/d_address is 'x'\n", $time);
$stop;
end
end
always @(posedge clk)
begin
if (reset_n)
if (^(d_read) === 1'bx)
begin
$write("%0d ns: ERROR: cpu_test_bench/d_read is 'x'\n", $time);
$stop;
end
end
reg [31:0] trace_handle; // for $fopen
initial
begin
trace_handle = $fopen("cpu.tr");
$fwrite(trace_handle, "version 2\nnumThreads 1\n");
end
always @(posedge clk)
begin
if (~reset_n || (M_valid & M_en))
$fwrite(trace_handle, "%0d ns: %0h,%0h,%0h,%0h,%0h,%0h,%0h,%0h,%0h,%0h,%0h,%0h,%0h,%0h,%0h,%0h,%0h,%0h\n", $time, ~reset_n, M_pcb, M_op_intr, M_op_hbreak, M_iw, M_wr_dst_reg, M_dst_regnum, M_wr_data_filtered, M_alu_result, M_st_data, M_mem_byte_en, M_cmp_result, M_target_pcb, M_status_reg, M_estatus_reg, M_bstatus_reg, M_ienable_reg, M_ipending_reg);
end
assign W_inst = ((((W_iw_op[5 : 0] == 36))))? 56'h2020206d756c69 :
((((W_iw_op[5 : 0] == 14))))? 56'h20202020626765 :
((((W_iw_op[5 : 0] == 39))))? 56'h20206c6462696f :
((((W_iw_op[5 : 0] == 24))))? 56'h20636d706e6569 :
((((W_iw_op[5 : 0] == 20))))? 56'h202020206f7269 :
((((W_iw_op[5 : 0] == 53))))? 56'h2020737477696f :
((((W_iw_op[5 : 0] == 1))))? 56'h20207273763031 :
((((W_iw_op[5 : 0] == 2))))? 56'h20207273763032 :
((((W_iw_op[5 : 0] == 48))))? 56'h636d706c747569 :
((((W_iw_op[5 : 0] == 46))))? 56'h20202062676575 :
((((W_iw_op[5 : 0] == 38))))? 56'h20202020626571 :
((((W_iw_op[5 : 0] == 12))))? 56'h202020616e6469 :
((((W_iw_op[5 : 0] == 23))))? 56'h202020206c6477 :
((((W_iw_op[5 : 0] == 5))))? 56'h20202020737462 :
((((W_iw_op[5 : 0] == 8))))? 56'h20636d70676569 :
((((W_iw_op[5 : 0] == 41))))? 56'h20207273763431 :
((((W_iw_op[5 : 0] == 25))))? 56'h20207273763235 :
((((W_iw_op[5 : 0] == 9))))? 56'h20207273763039 :
((((W_iw_op[5 : 0] == 43))))? 56'h206c646875696f :
((((W_iw_op[5 : 0] == 42))))? 56'h20207273763432 :
((((W_iw_op[5 : 0] == 26))))? 56'h20207273763236 :
((((W_iw_op[5 : 0] == 44))))? 56'h2020616e646869 :
((((W_iw_op[5 : 0] == 61))))? 56'h20207273763631 :
((((W_iw_op[5 : 0] == 29))))? 56'h20207273763239 :
((((W_iw_op[5 : 0] == 13))))? 56'h20202020737468 :
((((W_iw_op[5 : 0] == 62))))? 56'h20207273763632 :
((((W_iw_op[5 : 0] == 63))))? 56'h20207273763633 :
((((W_iw_op[5 : 0] == 59))))? 56'h20666c75736864 :
((((W_iw_op[5 : 0] == 47))))? 56'h20206c6468696f :
((((W_iw_op[5 : 0] == 49))))? 56'h20207273763439 :
((((W_iw_op[5 : 0] == 52))))? 56'h2020206f726869 :
((((W_iw_op[5 : 0] == 27))))? 56'h666c7573686461 :
((((W_iw_op[5 : 0] == 0))))? 56'h20202063616c6c :
((((W_iw_op[5 : 0] == 32))))? 56'h20636d70657169 :
((((W_iw_op[5 : 0] == 55))))? 56'h20206c6477696f :
((((W_iw_op[5 : 0] == 50))))? 56'h20637573746f6d :
((((W_iw_op[5 : 0] == 21))))? 56'h20202020737477 :
((((W_iw_op[5 : 0] == 3))))? 56'h2020206c646275 :
((((W_iw_op[5 : 0] == 37))))? 56'h2020737462696f :
((((W_iw_op[5 : 0] == 10))))? 56'h20207273763130 :
((((W_iw_op[5 : 0] == 40))))? 56'h636d7067657569 :
((((W_iw_op[5 : 0] == 28))))? 56'h202020786f7269 :
((((W_iw_op[5 : 0] == 31))))? 56'h20207273763331 :
((((W_iw_op[5 : 0] == 4))))? 56'h20202061646469 :
((((W_iw_op[5 : 0] == 11))))? 56'h2020206c646875 :
((((W_iw_op[5 : 0] == 33))))? 56'h20207273763333 :
((((W_iw_op[5 : 0] == 17))))? 56'h20207273763137 :
((((W_iw_op[5 : 0] == 34))))? 56'h20207273763334 :
((((W_iw_op[5 : 0] == 30))))? 56'h20202020626e65 :
((((W_iw_op[5 : 0] == 18))))? 56'h20207273763138 :
((((W_iw_op[5 : 0] == 19))))? 56'h20207273763139 :
((((W_iw_op[5 : 0] == 60))))? 56'h2020786f726869 :
((((W_iw_op[5 : 0] == 56))))? 56'h20207273763536 :
((((W_iw_op[5 : 0] == 54))))? 56'h202020626c7475 :
((((W_iw_op[5 : 0] == 57))))? 56'h20207273763537 :
((((W_iw_op[5 : 0] == 35))))? 56'h206c646275696f :
((((W_iw_op[5 : 0] == 7))))? 56'h202020206c6462 :
((((W_iw_op[5 : 0] == 45))))? 56'h2020737468696f :
((((W_iw_op[5 : 0] == 51))))? 56'h2020696e697464 :
((((W_iw_op[5 : 0] == 22))))? 56'h20202020626c74 :
((((W_iw_op[5 : 0] == 16))))? 56'h20636d706c7469 :
((((W_iw_op[5 : 0] == 6))))? 56'h20202020206272 :
((((W_iw_op[5 : 0] == 15))))? 56'h202020206c6468 :
(((W_op_opx & (W_iw_opx[5 : 0] == 41))))? 56'h2020696e697469 :
(((W_op_opx & (W_iw_opx[5 : 0] == 2))))? 56'h202020726f6c69 :
(((W_op_opx & (W_iw_opx[5 : 0] == 24))))? 56'h2020636d706e65 :
(((W_op_opx & (W_iw_opx[5 : 0] == 6))))? 56'h202020206e6f72 :
(((W_op_opx & (W_iw_opx[5 : 0] == 45))))? 56'h20202074726170 :
(((W_op_opx & (W_iw_opx[5 : 0] == 19))))? 56'h20202020736c6c :
(((W_op_opx & (W_iw_opx[5 : 0] == 59))))? 56'h20202020737261 :
(((W_op_opx & (W_iw_opx[5 : 0] == 48))))? 56'h20636d706c7475 :
(((W_op_opx & (W_iw_opx[5 : 0] == 46))))? 56'h2020777263746c :
(((W_op_opx & (W_iw_opx[5 : 0] == 9))))? 56'h20202062726574 :
(((W_op_opx & (W_iw_opx[5 : 0] == 3))))? 56'h20202020726f6c :
(((W_op_opx & (W_iw_opx[5 : 0] == 14))))? 56'h20202020616e64 :
(((W_op_opx & (W_iw_opx[5 : 0] == 0))))? 56'h20727376783030 :
(((W_op_opx & (W_iw_opx[5 : 0] == 20))))? 56'h20727376783230 :
(((W_op_opx & (W_iw_opx[5 : 0] == 16))))? 56'h2020636d706c74 :
(((W_op_opx & (W_iw_opx[5 : 0] == 11))))? 56'h20202020726f72 :
(((W_op_opx & (W_iw_opx[5 : 0] == 53))))? 56'h2068627265616b :
(((W_op_opx & (W_iw_opx[5 : 0] == 29))))? 56'h202063616c6c72 :
(((W_op_opx & (W_iw_opx[5 : 0] == 21))))? 56'h20727376783231 :
(((W_op_opx & (W_iw_opx[5 : 0] == 27))))? 56'h2020202073726c :
(((W_op_opx & (W_iw_opx[5 : 0] == 61))))? 56'h202020696e7472 :
(((W_op_opx & (W_iw_opx[5 : 0] == 25))))? 56'h20727376783235 :
(((W_op_opx & (W_iw_opx[5 : 0] == 1))))? 56'h20202065726574 :
(((W_op_opx & (W_iw_opx[5 : 0] == 42))))? 56'h20727376783432 :
(((W_op_opx & (W_iw_opx[5 : 0] == 8))))? 56'h2020636d706765 :
(((W_op_opx & (W_iw_opx[5 : 0] == 43))))? 56'h20727376783433 :
(((W_op_opx & (W_iw_opx[5 : 0] == 60))))? 56'h20727376783630 :
(((W_op_opx & (W_iw_opx[5 : 0] == 44))))? 56'h20727376783434 :
(((W_op_opx & (W_iw_opx[5 : 0] == 36))))? 56'h20202064697675 :
(((W_op_opx & (W_iw_opx[5 : 0] == 62))))? 56'h20727376783632 :
(((W_op_opx & (W_iw_opx[5 : 0] == 12))))? 56'h20666c75736869 :
(((W_op_opx & (W_iw_opx[5 : 0] == 63))))? 56'h20727376783633 :
(((W_op_opx & (W_iw_opx[5 : 0] == 47))))? 56'h20727376783437 :
(((W_op_opx & (W_iw_opx[5 : 0] == 40))))? 56'h20636d70676575 :
(((W_op_opx & (W_iw_opx[5 : 0] == 31))))? 56'h206d756c787373 :
(((W_op_opx & (W_iw_opx[5 : 0] == 52))))? 56'h2020627265616b :
(((W_op_opx & (W_iw_opx[5 : 0] == 37))))? 56'h20202020646976 :
(((W_op_opx & (W_iw_opx[5 : 0] == 32))))? 56'h2020636d706571 :
(((W_op_opx & (W_iw_opx[5 : 0] == 18))))? 56'h202020736c6c69 :
(((W_op_opx & (W_iw_opx[5 : 0] == 23))))? 56'h206d756c787375 :
(((W_op_opx & (W_iw_opx[5 : 0] == 28))))? 56'h206e6578747063 :
(((W_op_opx & (W_iw_opx[5 : 0] == 4))))? 56'h20666c75736870 :
(((W_op_opx & (W_iw_opx[5 : 0] == 30))))? 56'h20202020786f72 :
(((W_op_opx & (W_iw_opx[5 : 0] == 54))))? 56'h20202073796e63 :
(((W_op_opx & (W_iw_opx[5 : 0] == 7))))? 56'h206d756c787575 :
(((W_op_opx & (W_iw_opx[5 : 0] == 39))))? 56'h202020206d756c :
(((W_op_opx & (W_iw_opx[5 : 0] == 10))))? 56'h20727376783130 :
(((W_op_opx & (W_iw_opx[5 : 0] == 57))))? 56'h20202020737562 :
(((W_op_opx & (W_iw_opx[5 : 0] == 26))))? 56'h20202073726c69 :
(((W_op_opx & (W_iw_opx[5 : 0] == 13))))? 56'h202020206a6d70 :
(((W_op_opx & (W_iw_opx[5 : 0] == 15))))? 56'h20727376783135 :
(((W_op_opx & (W_iw_opx[5 : 0] == 33))))? 56'h20727376783333 :
(((W_op_opx & (W_iw_opx[5 : 0] == 17))))? 56'h20727376783137 :
(((W_op_opx & (W_iw_opx[5 : 0] == 50))))? 56'h20727376783530 :
(((W_op_opx & (W_iw_opx[5 : 0] == 34))))? 56'h20727376783334 :
(((W_op_opx & (W_iw_opx[5 : 0] == 51))))? 56'h20727376783531 :
(((W_op_opx & (W_iw_opx[5 : 0] == 38))))? 56'h2020726463746c :
(((W_op_opx & (W_iw_opx[5 : 0] == 35))))? 56'h20727376783335 :
(((W_op_opx & (W_iw_opx[5 : 0] == 22))))? 56'h20202020206f72 :
(((W_op_opx & (W_iw_opx[5 : 0] == 49))))? 56'h20202020616464 :
(((W_op_opx & (W_iw_opx[5 : 0] == 58))))? 56'h20202073726169 :
(((W_op_opx & (W_iw_opx[5 : 0] == 55))))? 56'h20727376783535 :
(((W_op_opx & (W_iw_opx[5 : 0] == 56))))? 56'h20727376783536 :
(((W_op_opx & (W_iw_opx[5 : 0] == 5))))? 56'h20202020726574 :
56'h20202020424144;
assign W_vinst = W_valid ? W_inst : {7{8'h2d}};
//////////////// END SIMULATION-ONLY CONTENTS
//synthesis translate_on
//synthesis read_comments_as_HDL on
//
// assign M_wr_data_filtered = M_wr_data_unfiltered;
//
//synthesis read_comments_as_HDL off
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -