initial
This commit is contained in:
229
chapter4/pcIMemDec
Executable file
229
chapter4/pcIMemDec
Executable file
@@ -0,0 +1,229 @@
|
||||
#! /usr/bin/vvp
|
||||
:ivl_version "12.0 (stable)";
|
||||
:ivl_delay_selection "TYPICAL";
|
||||
:vpi_time_precision - 12;
|
||||
:vpi_module "/usr/lib64/ivl/system.vpi";
|
||||
:vpi_module "/usr/lib64/ivl/vhdl_sys.vpi";
|
||||
:vpi_module "/usr/lib64/ivl/vhdl_textio.vpi";
|
||||
:vpi_module "/usr/lib64/ivl/v2005_math.vpi";
|
||||
:vpi_module "/usr/lib64/ivl/va_math.vpi";
|
||||
S_0x5615a9568800 .scope module, "pcIMemDecTB" "pcIMemDecTB" 2 3;
|
||||
.timescale -9 -12;
|
||||
v0x5615a9591ae0_0 .var "clk", 0 0;
|
||||
v0x5615a9591ba0_0 .net "instr", 31 0, L_0x5615a95920d0; 1 drivers
|
||||
v0x5615a9591c40_0 .net "next_pc", 31 0, v0x5615a95917c0_0; 1 drivers
|
||||
v0x5615a9591ce0_0 .net "pc", 31 0, v0x5615a95918a0_0; 1 drivers
|
||||
v0x5615a9591d80_0 .var "rst", 0 0;
|
||||
v0x5615a9591e20 .array "test_mem", 5 0, 31 0;
|
||||
S_0x5615a9568990 .scope module, "dut" "pcIMemDec" 2 28, 3 1 0, S_0x5615a9568800;
|
||||
.timescale 0 0;
|
||||
.port_info 0 /INPUT 1 "rst";
|
||||
.port_info 1 /INPUT 1 "clk";
|
||||
.port_info 2 /OUTPUT 32 "pc";
|
||||
.port_info 3 /OUTPUT 32 "next_pc";
|
||||
.port_info 4 /OUTPUT 32 "instr";
|
||||
L_0x5615a95920d0 .functor BUFZ 32, L_0x5615a9591ec0, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>, C4<00000000000000000000000000000000>;
|
||||
L_0x5615a95925c0 .functor OR 1, L_0x5615a9592280, L_0x5615a9592490, C4<0>, C4<0>;
|
||||
L_0x5615a9592b70 .functor OR 1, L_0x5615a9592770, L_0x5615a95929a0, C4<0>, C4<0>;
|
||||
L_0x5615a9592ed0 .functor OR 1, L_0x5615a9592b70, L_0x5615a9592d20, C4<0>, C4<0>;
|
||||
L_0x5615a9592e60 .functor OR 1, L_0x5615a9592ed0, L_0x5615a95930b0, C4<0>, C4<0>;
|
||||
L_0x5615a9593580 .functor OR 1, L_0x5615a9592e60, L_0x5615a95933b0, C4<0>, C4<0>;
|
||||
L_0x5615a9593b90 .functor OR 1, L_0x5615a9593770, L_0x5615a95939f0, C4<0>, C4<0>;
|
||||
L_0x5615a9593ea0 .functor OR 1, L_0x5615a9593b90, L_0x5615a9593ca0, C4<0>, C4<0>;
|
||||
L_0x5615a95942b0 .functor OR 1, L_0x5615a9593ea0, L_0x5615a95940a0, C4<0>, C4<0>;
|
||||
L_0x5615a9594950 .functor OR 1, L_0x5615a9594460, L_0x5615a9594720, C4<0>, C4<0>;
|
||||
v0x5615a9563ea0_0 .net *"_ivl_0", 31 0, L_0x5615a9591ec0; 1 drivers
|
||||
v0x5615a958e600_0 .net *"_ivl_10", 0 0, L_0x5615a9592280; 1 drivers
|
||||
v0x5615a958e6c0_0 .net *"_ivl_103", 6 0, L_0x5615a9594ac0; 1 drivers
|
||||
L_0x7f12ec2a43c0 .functor BUFT 1, C4<1100011>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a958e780_0 .net/2u *"_ivl_104", 6 0, L_0x7f12ec2a43c0; 1 drivers
|
||||
v0x5615a958e860_0 .net *"_ivl_109", 6 0, L_0x5615a9594f60; 1 drivers
|
||||
L_0x7f12ec2a4408 .functor BUFT 1, C4<1101111>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a958e990_0 .net/2u *"_ivl_110", 6 0, L_0x7f12ec2a4408; 1 drivers
|
||||
v0x5615a958ea70_0 .net *"_ivl_13", 6 0, L_0x5615a95923f0; 1 drivers
|
||||
L_0x7f12ec2a4060 .functor BUFT 1, C4<0010111>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a958eb50_0 .net/2u *"_ivl_14", 6 0, L_0x7f12ec2a4060; 1 drivers
|
||||
v0x5615a958ec30_0 .net *"_ivl_16", 0 0, L_0x5615a9592490; 1 drivers
|
||||
v0x5615a958ecf0_0 .net *"_ivl_21", 6 0, L_0x5615a95926d0; 1 drivers
|
||||
L_0x7f12ec2a40a8 .functor BUFT 1, C4<0000011>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a958edd0_0 .net/2u *"_ivl_22", 6 0, L_0x7f12ec2a40a8; 1 drivers
|
||||
v0x5615a958eeb0_0 .net *"_ivl_24", 0 0, L_0x5615a9592770; 1 drivers
|
||||
v0x5615a958ef70_0 .net *"_ivl_27", 6 0, L_0x5615a9592900; 1 drivers
|
||||
L_0x7f12ec2a40f0 .functor BUFT 1, C4<0000111>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a958f050_0 .net/2u *"_ivl_28", 6 0, L_0x7f12ec2a40f0; 1 drivers
|
||||
v0x5615a958f130_0 .net *"_ivl_3", 29 0, L_0x5615a9591f90; 1 drivers
|
||||
v0x5615a958f210_0 .net *"_ivl_30", 0 0, L_0x5615a95929a0; 1 drivers
|
||||
v0x5615a958f2d0_0 .net *"_ivl_33", 0 0, L_0x5615a9592b70; 1 drivers
|
||||
v0x5615a958f390_0 .net *"_ivl_35", 6 0, L_0x5615a9592c30; 1 drivers
|
||||
L_0x7f12ec2a4138 .functor BUFT 1, C4<0010011>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a958f470_0 .net/2u *"_ivl_36", 6 0, L_0x7f12ec2a4138; 1 drivers
|
||||
v0x5615a958f550_0 .net *"_ivl_38", 0 0, L_0x5615a9592d20; 1 drivers
|
||||
v0x5615a958f610_0 .net *"_ivl_41", 0 0, L_0x5615a9592ed0; 1 drivers
|
||||
v0x5615a958f6d0_0 .net *"_ivl_43", 6 0, L_0x5615a9593010; 1 drivers
|
||||
L_0x7f12ec2a4180 .functor BUFT 1, C4<0011011>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a958f7b0_0 .net/2u *"_ivl_44", 6 0, L_0x7f12ec2a4180; 1 drivers
|
||||
v0x5615a958f890_0 .net *"_ivl_46", 0 0, L_0x5615a95930b0; 1 drivers
|
||||
v0x5615a958f950_0 .net *"_ivl_49", 0 0, L_0x5615a9592e60; 1 drivers
|
||||
v0x5615a958fa10_0 .net *"_ivl_51", 6 0, L_0x5615a9593310; 1 drivers
|
||||
L_0x7f12ec2a41c8 .functor BUFT 1, C4<1100111>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a958faf0_0 .net/2u *"_ivl_52", 6 0, L_0x7f12ec2a41c8; 1 drivers
|
||||
v0x5615a958fbd0_0 .net *"_ivl_54", 0 0, L_0x5615a95933b0; 1 drivers
|
||||
v0x5615a958fc90_0 .net *"_ivl_59", 6 0, L_0x5615a95936d0; 1 drivers
|
||||
L_0x7f12ec2a4210 .functor BUFT 1, C4<0101111>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a958fd70_0 .net/2u *"_ivl_60", 6 0, L_0x7f12ec2a4210; 1 drivers
|
||||
v0x5615a958fe50_0 .net *"_ivl_62", 0 0, L_0x5615a9593770; 1 drivers
|
||||
v0x5615a958ff10_0 .net *"_ivl_65", 6 0, L_0x5615a9593950; 1 drivers
|
||||
L_0x7f12ec2a4258 .functor BUFT 1, C4<0110011>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a958fff0_0 .net/2u *"_ivl_66", 6 0, L_0x7f12ec2a4258; 1 drivers
|
||||
v0x5615a95902e0_0 .net *"_ivl_68", 0 0, L_0x5615a95939f0; 1 drivers
|
||||
v0x5615a95903a0_0 .net *"_ivl_7", 6 0, L_0x5615a95921e0; 1 drivers
|
||||
v0x5615a9590480_0 .net *"_ivl_71", 0 0, L_0x5615a9593b90; 1 drivers
|
||||
v0x5615a9590540_0 .net *"_ivl_73", 6 0, L_0x5615a95938b0; 1 drivers
|
||||
L_0x7f12ec2a42a0 .functor BUFT 1, C4<0111011>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a9590620_0 .net/2u *"_ivl_74", 6 0, L_0x7f12ec2a42a0; 1 drivers
|
||||
v0x5615a9590700_0 .net *"_ivl_76", 0 0, L_0x5615a9593ca0; 1 drivers
|
||||
v0x5615a95907c0_0 .net *"_ivl_79", 0 0, L_0x5615a9593ea0; 1 drivers
|
||||
L_0x7f12ec2a4018 .functor BUFT 1, C4<0110111>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a9590880_0 .net/2u *"_ivl_8", 6 0, L_0x7f12ec2a4018; 1 drivers
|
||||
v0x5615a9590960_0 .net *"_ivl_81", 6 0, L_0x5615a9594000; 1 drivers
|
||||
L_0x7f12ec2a42e8 .functor BUFT 1, C4<0110011>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a9590a40_0 .net/2u *"_ivl_82", 6 0, L_0x7f12ec2a42e8; 1 drivers
|
||||
v0x5615a9590b20_0 .net *"_ivl_84", 0 0, L_0x5615a95940a0; 1 drivers
|
||||
v0x5615a9590be0_0 .net *"_ivl_89", 6 0, L_0x5615a95943c0; 1 drivers
|
||||
L_0x7f12ec2a4330 .functor BUFT 1, C4<0100011>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a9590cc0_0 .net/2u *"_ivl_90", 6 0, L_0x7f12ec2a4330; 1 drivers
|
||||
v0x5615a9590da0_0 .net *"_ivl_92", 0 0, L_0x5615a9594460; 1 drivers
|
||||
v0x5615a9590e60_0 .net *"_ivl_95", 6 0, L_0x5615a9594680; 1 drivers
|
||||
L_0x7f12ec2a4378 .functor BUFT 1, C4<0100111>, C4<0>, C4<0>, C4<0>;
|
||||
v0x5615a9590f40_0 .net/2u *"_ivl_96", 6 0, L_0x7f12ec2a4378; 1 drivers
|
||||
v0x5615a9591020_0 .net *"_ivl_98", 0 0, L_0x5615a9594720; 1 drivers
|
||||
v0x5615a95910e0_0 .net "clk", 0 0, v0x5615a9591ae0_0; 1 drivers
|
||||
v0x5615a95911a0 .array "imem", 255 0, 31 0;
|
||||
v0x5615a9591260_0 .net "instr", 31 0, L_0x5615a95920d0; alias, 1 drivers
|
||||
v0x5615a9591340_0 .net "isBType", 0 0, L_0x5615a9594d70; 1 drivers
|
||||
v0x5615a9591400_0 .net "isIType", 0 0, L_0x5615a9593580; 1 drivers
|
||||
v0x5615a95914c0_0 .net "isJType", 0 0, L_0x5615a9595000; 1 drivers
|
||||
v0x5615a9591580_0 .net "isRType", 0 0, L_0x5615a95942b0; 1 drivers
|
||||
v0x5615a9591640_0 .net "isSType", 0 0, L_0x5615a9594950; 1 drivers
|
||||
v0x5615a9591700_0 .net "isUType", 0 0, L_0x5615a95925c0; 1 drivers
|
||||
v0x5615a95917c0_0 .var "next_pc", 31 0;
|
||||
v0x5615a95918a0_0 .var "pc", 31 0;
|
||||
v0x5615a9591980_0 .net "rst", 0 0, v0x5615a9591d80_0; 1 drivers
|
||||
E_0x5615a9561800 .event posedge, v0x5615a95910e0_0;
|
||||
L_0x5615a9591ec0 .array/port v0x5615a95911a0, L_0x5615a9591f90;
|
||||
L_0x5615a9591f90 .part v0x5615a95918a0_0, 2, 30;
|
||||
L_0x5615a95921e0 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a9592280 .cmp/eq 7, L_0x5615a95921e0, L_0x7f12ec2a4018;
|
||||
L_0x5615a95923f0 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a9592490 .cmp/eq 7, L_0x5615a95923f0, L_0x7f12ec2a4060;
|
||||
L_0x5615a95926d0 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a9592770 .cmp/eq 7, L_0x5615a95926d0, L_0x7f12ec2a40a8;
|
||||
L_0x5615a9592900 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a95929a0 .cmp/eq 7, L_0x5615a9592900, L_0x7f12ec2a40f0;
|
||||
L_0x5615a9592c30 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a9592d20 .cmp/eq 7, L_0x5615a9592c30, L_0x7f12ec2a4138;
|
||||
L_0x5615a9593010 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a95930b0 .cmp/eq 7, L_0x5615a9593010, L_0x7f12ec2a4180;
|
||||
L_0x5615a9593310 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a95933b0 .cmp/eq 7, L_0x5615a9593310, L_0x7f12ec2a41c8;
|
||||
L_0x5615a95936d0 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a9593770 .cmp/eq 7, L_0x5615a95936d0, L_0x7f12ec2a4210;
|
||||
L_0x5615a9593950 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a95939f0 .cmp/eq 7, L_0x5615a9593950, L_0x7f12ec2a4258;
|
||||
L_0x5615a95938b0 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a9593ca0 .cmp/eq 7, L_0x5615a95938b0, L_0x7f12ec2a42a0;
|
||||
L_0x5615a9594000 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a95940a0 .cmp/eq 7, L_0x5615a9594000, L_0x7f12ec2a42e8;
|
||||
L_0x5615a95943c0 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a9594460 .cmp/eq 7, L_0x5615a95943c0, L_0x7f12ec2a4330;
|
||||
L_0x5615a9594680 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a9594720 .cmp/eq 7, L_0x5615a9594680, L_0x7f12ec2a4378;
|
||||
L_0x5615a9594ac0 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a9594d70 .cmp/eq 7, L_0x5615a9594ac0, L_0x7f12ec2a43c0;
|
||||
L_0x5615a9594f60 .part L_0x5615a95920d0, 0, 7;
|
||||
L_0x5615a9595000 .cmp/eq 7, L_0x5615a9594f60, L_0x7f12ec2a4408;
|
||||
.scope S_0x5615a9568990;
|
||||
T_0 ;
|
||||
%wait E_0x5615a9561800;
|
||||
%load/vec4 v0x5615a9591980_0;
|
||||
%flag_set/vec4 8;
|
||||
%jmp/0xz T_0.0, 8;
|
||||
%pushi/vec4 0, 0, 32;
|
||||
%assign/vec4 v0x5615a95918a0_0, 0;
|
||||
%jmp T_0.1;
|
||||
T_0.0 ;
|
||||
%load/vec4 v0x5615a95918a0_0;
|
||||
%assign/vec4 v0x5615a95917c0_0, 0;
|
||||
%load/vec4 v0x5615a95918a0_0;
|
||||
%addi 4, 0, 32;
|
||||
%assign/vec4 v0x5615a95918a0_0, 0;
|
||||
T_0.1 ;
|
||||
%jmp T_0;
|
||||
.thread T_0;
|
||||
.scope S_0x5615a9568990;
|
||||
T_1 ;
|
||||
%vpi_call 3 25 "$readmemh", "program.hex", v0x5615a95911a0 {0 0 0};
|
||||
%end;
|
||||
.thread T_1;
|
||||
.scope S_0x5615a9568800;
|
||||
T_2 ;
|
||||
%pushi/vec4 4151, 0, 32;
|
||||
%ix/load 4, 0, 0;
|
||||
%flag_set/imm 4, 0;
|
||||
%store/vec4a v0x5615a9591e20, 4, 0;
|
||||
%pushi/vec4 1048723, 0, 32;
|
||||
%ix/load 4, 1, 0;
|
||||
%flag_set/imm 4, 0;
|
||||
%store/vec4a v0x5615a9591e20, 4, 0;
|
||||
%pushi/vec4 1081779, 0, 32;
|
||||
%ix/load 4, 2, 0;
|
||||
%flag_set/imm 4, 0;
|
||||
%store/vec4a v0x5615a9591e20, 4, 0;
|
||||
%pushi/vec4 1089571, 0, 32;
|
||||
%ix/load 4, 3, 0;
|
||||
%flag_set/imm 4, 0;
|
||||
%store/vec4a v0x5615a9591e20, 4, 0;
|
||||
%pushi/vec4 1082979, 0, 32;
|
||||
%ix/load 4, 4, 0;
|
||||
%flag_set/imm 4, 0;
|
||||
%store/vec4a v0x5615a9591e20, 4, 0;
|
||||
%pushi/vec4 12583023, 0, 32;
|
||||
%ix/load 4, 5, 0;
|
||||
%flag_set/imm 4, 0;
|
||||
%store/vec4a v0x5615a9591e20, 4, 0;
|
||||
%vpi_call 2 23 "$writememh", "program.hex", v0x5615a9591e20 {0 0 0};
|
||||
%delay 1000, 0;
|
||||
%end;
|
||||
.thread T_2;
|
||||
.scope S_0x5615a9568800;
|
||||
T_3 ;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x5615a9591ae0_0, 0, 1;
|
||||
T_3.0 ;
|
||||
%delay 5000, 0;
|
||||
%load/vec4 v0x5615a9591ae0_0;
|
||||
%inv;
|
||||
%store/vec4 v0x5615a9591ae0_0, 0, 1;
|
||||
%jmp T_3.0;
|
||||
%end;
|
||||
.thread T_3;
|
||||
.scope S_0x5615a9568800;
|
||||
T_4 ;
|
||||
%vpi_call 2 44 "$dumpfile", "pcIMemDec.vcd" {0 0 0};
|
||||
%vpi_call 2 45 "$dumpvars", 32'sb00000000000000000000000000000000, S_0x5615a9568800 {0 0 0};
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x5615a9591d80_0, 0, 1;
|
||||
%delay 20000, 0;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x5615a9591d80_0, 0, 1;
|
||||
%vpi_call 2 50 "$monitor", "Time=%0t PC=%h Instr=%h Types: U=%b I=%b R=%b S=%b B=%b J=%b", $time, v0x5615a9591ce0_0, v0x5615a9591ba0_0, v0x5615a9591700_0, v0x5615a9591400_0, v0x5615a9591580_0, v0x5615a9591640_0, v0x5615a9591340_0, v0x5615a95914c0_0 {0 0 0};
|
||||
%delay 200000, 0;
|
||||
%vpi_call 2 54 "$finish" {0 0 0};
|
||||
%end;
|
||||
.thread T_4;
|
||||
# The file index is used to find the file name in the following table.
|
||||
:file_names 4;
|
||||
"N/A";
|
||||
"<interactive>";
|
||||
"pcIMemDecTB.v";
|
||||
"pcIMemDec.v";
|
Reference in New Issue
Block a user