рдпрд╣ рд▓реЗрдЦ рд╡реЗрд░рд┐рд▓реЙрдЧ рдореЗрдВ рдбрд┐рдЬрд┐рдЯрд▓ рд▓реЙрдЬрд┐рдХ рд╕рд░реНрдХрд┐рдЯреЛрдВ рдХреЗ рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореБрдлреНрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛, рдореЗрдВрдбреЙрд░рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕реЗ рдХреИрдбреЗрдВрд╕ рдФрд░ рдореЙрдбрд▓рд╕рд┐рдо рд╕реЗ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВред ModelSim рдФрд░ Verilator рдореЗрдВ рд╕рд┐рдореБрд▓реЗрд╢рди рдХреА рддреБрд▓рдирд╛ред рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рддреНрдпрд╛рдкрди рдкрджреНрдзрддрд┐, рдпреВрд╡реАрдПрдо рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
SystemC UVM рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди
1. рд╕рд┐рдВрджреВрд░
рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд┐рд╡рд░рдг рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ verilog рд╣реИред рдЖрдк рдЗрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рдпреЛрдЬрдирд╛ рд╣реИ:

рдЗрд╕рдХрд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
reg [3:0]counter; always @(posedge clk or posedge reset) if(reset) counter <= 4'd0; else counter <= counter + 1'd1;
рд╕рд┐рдореБрд▓реЗрд╢рди рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рддрд░рдВрдЧ рдорд┐рд▓рддреА рд╣реИ:

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рдореВрд▓реНрдп, рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ, рдШрдбрд╝реА рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рдордиреЗ рдХрд╛рдЙрдВрдЯрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ рд▓рд┐рдЦрд┐рдд рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╕рднреА рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рд╣рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдПрдХ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдЧрд╛ред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рд╡реЗрд░рд┐рд▓реЛрдЧ, рд╕рд┐рд╕реНрдЯрдорд╡рд┐рд░рд▓реЙрдЧ, рдкрд╛рдпрдерди (рд▓реЗрдЦрди рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП) рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк
рд╕рд┐рд╕реНрдЯрдорд╕реА рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред SystemC рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ C ++ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рд╕рд┐рд╕реНрдЯрдо-рд▓реЗрд╡рд▓ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо-рд╕реНрддрд░реАрдп рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рд╕рддреНрдпрд╛рдкрди рднрд╛рд╖рд╛ рд╣реИред
рд╕рд┐рд╕реНрдЯрдорд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрд░рд┐рд▓реЛрдЧ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗрд░рд┐рд▓реЙрдЧ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реА ++ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдВред
Verilator рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдореБрдлрд╝реНрдд Verilog HDL рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рд╣реИ рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рд╕рд┐рдореБрд▓реЗрдЯрд░реЛрдВ рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИред Verilator рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд SystemVerilog (рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдЯреЗрд╕реНрдЯреЗрдб рдХреЛрдб рдирд╣реАрдВ рд╣реИ) рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА SystemVerilog рдФрд░ Synthesis рдХреЗ рдХреБрдЫ рдмрдпрд╛рдиреЛрдВ рдХреЛ рдПрдХрд▓ рдпрд╛ рдмрд╣реБ-рд╕реВрддреНрд░рд┐рдд C тАЛтАЛ++ рдпрд╛ SystemC рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡реЗрд░рд┐рд▓реЗрдЯрд░ рдХреЛ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд╣рд╛рдВ рд╕рд┐рдореБрд▓реЗрд╢рди рдкреНрд░рджрд░реНрд╢рди рд╕рд░реНрд╡реЛрдкрд░рд┐ рд╣реИ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдореНрдмреЗрдбреЗрдб рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рд╡реЗрд░рд┐рд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдЬрд╛рд░реЛрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрдИ рдмрд╣реБрдд рдмрдбрд╝реЗ рдорд▓реНрдЯреА рдорд┐рд▓рд┐рдпрди рдбреЙрд▓рд░ рдХреЗ рдЧреЗрдЯрд╡реЗ рдбрд┐рдЬрд╛рдЗрдиреЛрдВ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрдИ рдЖрдИрдкреА рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдкреНрд░рджрд╛рддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрд░реНрдо рд╕реЗ рдЖрдИрдкреА рдФрд░ рд╕рднреА рдкреНрд░рд╕рд┐рджреНрдз рдЖрд░рдЖрдИрдПрд╕рд╕реА-рд╡реА рдЖрдИрдкреА рдкреНрд░рджрд╛рддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдпрджрд┐ рдЖрдк NC-Verilog, VCS рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ Verilog рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдпрд╛ рдмрд╣реБрдд рдЫреЛрдЯреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП Verilog рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЗ рдкреВрд░реНрдг-рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк Verilog рдХреЛ C ++ рдпрд╛ SystemC рдореЗрдВ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреА рдЯреАрдо рдХреЗрд╡рд▓ C ++ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдореБрдлрд╝реНрдд Verilog рд╕рдВрдХрд▓рдХ рд╣реИред
рдЙрдмрдВрдЯреВ рдкрд░ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рд▓рд┐рдВрдХ рд╕реЗ рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
рд╕реЗрдЯ рдХрд░реЗрдВ:
2. рдЬреАрдЯреАрдХреЗ рд╡реЗрд╡

GTKWave рдПрдХ рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓рд╛ рддрд░рдВрдЧ рджрд░реНрд╢рдХ рд╣реИ рдФрд░ рдЖрдкрдХреЛ vcd рд╕реЗ fst рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рддреЗрдЬред
рд╕реЗрдЯ рдХрд░реЗрдВ:
sudo apt-get install gtkwave
3. SYSTEMC
рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ C ++ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рд╕рд┐рд╕реНрдЯрдо-рд╕реНрддрд░реАрдп рдореЙрдбрд▓ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ред
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рд┐рд░рд┐рд▓реЗрдЯрд░ рд╕рд┐рд╕реНрдЯрдордХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдмреЗрдВрдЪ рдкрд░ рдЯреЗрд╕реНрдЯ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рд╡реЗрд░рд┐рд▓реЙрдЧ рдкрд░ рд╕реНрд░реЛрдд рдлрд╛рдЗрд▓реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХреНрд▓реЗрд░рд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЬреА ++ рдХрдВрдкрд╛рдЗрд▓рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХреНрд╕реЗрд▓реЗрд░рд╛ рд╕рд┐рд╕реНрдЯрдореНрд╕ рдЗрдирд┐рд╢рд┐рдПрдЯрд┐рд╡ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░, рдЧреИрд░-рд▓рд╛рднрдХрд╛рд░реА рд╕рдВрдЧрдарди рд╣реИ рдЬреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдЙрджреНрдпреЛрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ рдХреЗ рдбрд┐рдЬрд╛рдЗрди, рд╕рд┐рдореБрд▓реЗрд╢рди рдФрд░ рд╕рддреНрдпрд╛рдкрди рдорд╛рдирдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ, рд╕рдорд░реНрдерди, рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдФрд░ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред
рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:
http://accellera.org/images/downloads/standards/systemc/systemc-2.3.1a.tar.gzрд╕реЗрдЯ рдХрд░реЗрдВ:
tar -xvf systemc-2.3.1a.tar.gz cd systemc-2.3.1a mkdir objdir sudo ./configure --prefix=/usr/local/systemc-2.3.1a/ sudo make sudo make install cd ../
4. SYSTEMC рдХреЗ рд▓рд┐рдП UVM
рдпрд╣ рдЖрд▓реЗрдЦ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ рдЬреЛ рдпреВрд╡реАрдПрдо рд╕рддреНрдпрд╛рдкрди рдЙрдкрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд╕рддреНрдпрд╛рдкрди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрджрд░реНрдн рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рдЙрддреНрдкрд╛рдж рдХреА рдЕрдиреБрд░реВрдкрддрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рд╣реИред рдЙрдирдХреЗ рд╕рддреНрдпрд╛рдкрди рдЙрдкрдХрд░рдг рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрд░рдЯреАрдПрд▓ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕реНрддрд░ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдореЙрдбрд▓ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрдХреНрд░рдо рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдпреВрд╡реАрдПрдо - (рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рд╡реЗрд░рд┐рдлрд┐рдХреЗрд╢рди рдореЗрдереЛрдбреЛрд▓реЙрдЬреА) рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рддреНрдпрд╛рдкрди рдкрджреНрдзрддрд┐ рд╣реИ, рдПрдХ рдорд╛рдирдХ рдЬреЛ рдЖрдИрдкреА рдмреНрд▓реЙрдХ рдорд╛рдиреНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдХреБрд╢рд▓ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред рдпреВрд╡реАрдПрдо рдПрдХ рд╕рддреНрдпрд╛рдкрди рдкрджреНрдзрддрд┐ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдЗрдХрд╛рдИ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рдкреНрд░рднрд╛рд╡реА рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ:
- рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рдорд░реНрдкрд┐рдд рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╕рдВрд░рдЪрдирд╛
- рдЙрджреНрджреЗрд╢реНрдп;
- рдмрд╛рдж рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛;
- рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рд╕реНрд╡рдЪрд╛рд▓рди;
- рд╕рдмрд╕реЗ рдкреВрд░реНрдг рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╕реВрдЪрдирд╛ рдХреА рдЕрдиреБрдорддрд┐, рдЬрдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдЙрд╕рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдФрд░ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдирдиреЗ рдФрд░ рд╕рдорд╛рдзрд╛рди рд╕реБрдЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
UVM рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ: рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдореЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдмреНрд▓реЙрдХреНрд╕ рдХреА рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд╛рда рдЬрдирд░реЗрдЯрд░, рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рдХрд▓реЗрдХреНрдЯрд░ рдЖрджрд┐ред рдпреВрд╡реАрдПрдо рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдЗрд╕рдХреА рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ systemc UVM рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЪрд▓реЛ рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред
рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:
https://www.accellera.org/images/downloads/drafts-review/uvm-systemc-1.0-beta2.tar.gzрд╕реЗрдЯ рдХрд░реЗрдВ:
tar -xvf uvm-systemc-1.0-beta2.tar.gz cd uvm-systemc-1.0-beta2/ mkdir objdir sudo ./configure --prefix=/usr/local/systemc_uvm/ --with-systemc=/usr/local/systemc-2.3.1a sudo make sudo make install
рд╣рдо рдПрдХ рдЧрдардмрдВрдзрди рдмрдирд╛рддреЗ рд╣реИрдВ:
sudo mkdir /usr/local/uvm_systemc_aliance
рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ / usr / рд╕реНрдерд╛рдиреАрдп / uvm_systemc_aliance / рдФрд░ /usr/local/systemc-2.3.1/ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ
рд▓рд┐рдВрдХ рдкрд░ рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:
https://github.com/paprikun/SYSTEMC/рд╡реЗрд░рд┐рд▓реЗрдЯрд░ рдЙрджрд╛рд╣рд░рдг рдлрд╝реЛрд▓реНрдбрд░ рдЦреЛрд▓реЗрдВред
рдЖрд░рдЯреАрдПрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдПрдХ PWM рдирд┐рдпрдВрддреНрд░рдХ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рд┐рдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдХрдлрд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВред
Tb рдлреЛрд▓реНрдбрд░ рдореЗрдВ рд╡реЗрд░рд┐рдлрд╛рдпрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред Tb / uvm рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ uvm рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдПрдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИ; рдпрд╣ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдпреВрд╡реАрдПрдо рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рд╣рдо рд╕рднреА рдХрдорд╛рдВрдб рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде рд╕рд┐рдо рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрдЦрддреЗ рд╣реИрдВ:
/usr/local/uvm_systemc_aliance//include/systemc.h:120:16: error: 'std::gets' has not been declared using std::gets;
рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЗрди 120 рдХреЛ рдмрджрд▓рдХрд░ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ:
#if defined(__cplusplus) && (__cplusplus < 201103L) using std::gets; #endif
рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рд╣рдо рдЯреЗрд╕реНрдЯрдмреЗрдВрдЪ рдЪрд▓рд╛рдиреЗ рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рдкрд░ рдареЛрдХрд░ рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:
/usr/local/uvm_systemc_aliance//include/sysc/packages/boost/get_pointer.hpp:21:40: warning: 'template<class> class std::auto_ptr' is deprecated [-Wdeprecated-declarations] template<class T> T * get_pointer(std::auto_ptr<T> const& p)
Auto_ptr рдХреЛ unique_ptr рдореЗрдВ рдмрджрд▓реЗрдВред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рд╕рд┐рдореБрд▓реЗрд╢рди
рдЕрдм рдЬрдм рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЧрдИ рд╣реИрдВ рдФрд░ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИрдВ, рддреЛ рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ: рд╕рднреА рдмрдирд╛рдПрдВред рд╕рд┐рдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд┐рдореВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рд╣рдо рдЗрд╕реЗ ./simu рдЯреАрдо рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
SystemC 2.3.1-Accellera --- Jun 28 2019 11:39:29 Copyright (c) 1996-2014 by all Contributors, ALL RIGHTS RESERVED Universal Verification Methodology for SystemC (UVM-SystemC) Version: 1.0-beta2 Date: 2018-10-24 Copyright (c) 2006 - 2018 by all Contributors See NOTICE file for all Contributors ALL RIGHTS RESERVED Licensed under the Apache License, Version 2.0 UVM_INFO @ 0 s: reporter [RNTST] Running test ... simulation real time = 9 sec UVM_INFO uvm_default_report_server.cpp(666) @ 179490249010 ps: reporter [UVM/REPORT/SERVER] --- UVM Report Summary --- ** Report counts by severity UVM_INFO : 1 UVM_WARNING : 0 UVM_ERROR : 0 UVM_FATAL : 0 ** Report counts by id [RNTST] 1 UVM_INFO @ 179490249010 ps: reporter [FINISH] UVM-SystemC phasing completed; simulation finished
рдЬрдм рд╕рд┐рдореБрд▓реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рдлрд╝рд░рдлреЙрд░реНрдо рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред Simu.vcd рдлрд╝рд╛рдЗрд▓ gtkwave рдХреЗ рд╕рд╛рде рдЦреЛрд▓реА рдЬрд╛ рд╕рдХрддреА рд╣реИ:

рдмрд╛рдИрдВ рдУрд░ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, SystemC рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдлрд┐рд░ Shift рдХреЛ рдкрдХрдбрд╝рдХрд░ рдХрд┐рд╕реА рднреА рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдФрд░ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЬрдм рдЖрдк рдордБрдбрд░рд╛рддреЗ рд╣реИрдВ рддреЛ рдЯреВрд▓рдЯрд┐рдкреНрд╕ рдЯреВрд▓рдмрд╛рд░ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рдорд╛рдЙрд╕ рд╕реНрдХреНрд░реЙрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╢рд┐рдлреНрдЯ рдпрд╛ cntrl рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреВрд╕рд░реЗ рдЫреЛрдЯреЗ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рднреА рддрд░реАрдХреЗ рд╣реИрдВред
рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИрдВ рдореЙрдбрд▓рд┐рдо рд░реВрдкрд╛рдВрддрд░рдг рдХрд░реЗрдВрдЧреЗред рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ, vsim рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВред рдЯрд░реНрдорд┐рдирд▓ рдореЙрдбрд▓ рдореЗрдВ:
vcd2wlf simu.vcd simu.wlf
рдпрд╛ рд▓рд┐рдирдХреНрд╕ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ gtkwave рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░:
vcd2lxt simu.vcd simu.lxt vcd2lxt2 simu.vcd simu.lxt2
рд╕рд┐рдореБрд▓реЗрд╢рди рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
рдореЙрдбрд▓рд┐рдо рдХреЗ рд▓рд┐рдП ред рдлреЛрд▓реНрдбрд░ рдореЙрдбрд▓рд┐рдо_рдПрдХреНрд╕рдкреНрд▓рд┐рдореЗрдВрдЯред рдЗрд╕реА рддрд░рд╣ UVM рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рд╕рдорд╛рди рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдПрдВред рдпрджрд┐ рдЖрдкрдиреЗ рдореЙрдбрд▓рдо рдХреЛ uvm рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдореЗрдХ рдСрд▓ рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рджреЛрдиреЛрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рдк рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╕рд┐рдореБрд▓реЗрд╢рди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╕рдордп рдореЗрдВ, рдЕрдВрддрд░ рдирд┐рдХрд▓рд╛:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдлрд╛рдпрджрд╛ рд╣реИред рдбреЗрдЯрд╛ 8GB рд░реИрдо, 8-рдХреЛрд░ рдкреНрд░реЛрд╕реЗрд╕рд░, 800 MHz рдХреЗ рд╕рд╛рде рдПрдХ рдХреЛрд░ рд▓реЛрдб рдХрд░рдиреЗ рд╡рд╛рд▓реЗ PC рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ:
рдпрд╣рд╛рдВ рдкрд░ рд╡реЗрд░рд┐рд▓реЗрдЯрд░ рдЦреЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╡реЗрд╡рдлреЙрд░реНрдо рдФрд░ рдЯреНрд░реЗрд╕ рдбреЗрдкреНрде рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдЕрд╡рдзрд┐ (рд╡реЗрд╡рдлреЙрд░реНрдо рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдЖрдкрдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реА рдлрд╝рд╛рдЗрд▓ рд╣реИред
рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рд╕рд┐рдореБрд▓реЗрд╢рди рдХреЗ рд╕рдордп рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрд╕ рдореЗрдВ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рдкрдврд╝рдиреЗ рдореЗрдВ рдПрдХ рд╡рд┐рд╕рдВрдЧрддрд┐ рдкрд╛рдИ рдЧрдИ рдереАред рдпрджрд┐ рдХреНрд▓рдХ рдлреНрд░рдВрдЯ рдХреЗ рджреМрд░рд╛рди рдмрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдореЙрдбрд▓рд┐рдо рдкрд╣рд▓реЗ рд╕рд╛рдордиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛:
input clk; input [7:0] in; reg [7:0] in_last_ ; ... always @(posedge clk) begin ... in_last_ <= in; ... end

рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдЗрд╕ рдмрд┐рдВрджреБ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╕рд┐рдореБрд▓реЗрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рд╕рд┐рдЧреНрдирд▓ рдХреА "x" рд╕реНрдерд┐рддрд┐ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдФрд░ "0" рдореЗрдВ рд╕рдм рдХреБрдЫ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ;
UVM TESTBENCH
рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг, tb / uvm рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдпреВрд╡реАрдПрдо рдЯреЗрд╕реНрдЯрдмреЗрдВрдЪ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдКрдкрд░ рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдбрд┐рд╡рд╛рдЗрд╕ PWM рдирд┐рдпрдВрддреНрд░рдХ рд╣реИред рдпреВрд╡реАрдПрдо рдкрд░реНрдпрд╛рд╡рд░рдг рдЖрд░реЗрдЦ:

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЖрд░реЗрдЦ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпреВрд╡реАрдПрдо рдореЗрдВ рдмреНрд▓реЙрдХ (рдХрдХреНрд╖рд╛рдПрдВ) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЙрд╕ рд╡рд░реНрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдЬрд╣рд╛рдВ рд╕реЗ рдЙрд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдЖрдЗрдП рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдкрд░реНрдпрд╛рд╡рд░рдг- рдлрд╝рд╛рдЗрд▓ env.h рдпрд╛ env.svhред рдпрд╣ рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдПрдЬреЗрдВрдЯ рд╡рд░реНрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рддреАрди рд╡рд░реНрдЧ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ: рд╕реАрдХреНрд╡реЗрдВрд╕рд░, рдбреНрд░рд╛рдЗрд╡рд░, рдореЙрдирд┐рдЯрд░ред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХреЛрдИ рдПрдЬреЗрдВрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп рдПрдирд╡реА рд╡рд░реНрдЧ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреБрдЫ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЕрдиреБрдХреНрд░рдордгред
рдЪрд▓рд┐рдП рд╕реАрдХреНрд╡реЗрдВрд╕ рд╕реНрдЯрд╛рд░реНрдЯрд┐рдВрдЧ рдХреЛрдб рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ:
sequence_[n]->start(sqr, NULL);
рд╕реАрдХреНрд╡реЗрдВрд╕рд░ (рд╕реАрдХреНрд╡реЗрдВрд╕рд░) - рдлрд╛рдЗрд▓ sequncer.hред рд╕рд┐рд╕реНрдЯрдо рд╡реЗрд░рд┐рд▓реЙрдЧ рдореЗрдВ, рдпрд╣ рдбрд┐рдлреЙрд▓реНрдЯ рд╕реАрдХреНрд╡реЗрдВрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рд╛ред рдПрдХ рд╡рд░реНрдЧ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдЕрдиреБрдХреНрд░рдо (рдЕрдиреБрдХреНрд░рдо) рд╣реЛрддреЗ рд╣реИрдВ (рдлрд╛рдЗрд▓реЗрдВ рдЕрдиреБрдХреНрд░рдо_рдП.рдПрдЪ, рдЕрдиреБрдХреНрд░рдо_рдПрдПрд╕рд╡реАрдПрдЪрдПрдЪ)ред рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрдХреНрд░рдо рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИред рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд▓реЗрдирджреЗрди рднреЗрдЬрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рд▓реЗрдирджреЗрди - рдПрдХ рд╡рд░реНрдЧ рд╕реЗ рджреВрд╕рд░реЗ рд╡рд░реНрдЧ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ред рдЬрд┐рд╕ рд╡рд░реНрдЧ рдореЗрдВ рд▓реЗрди-рджреЗрди рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╡рд╣ рдмрд╕_рдЯреНрд░реЗрди рд╣реИред рдиреАрдЪреЗ рджреЛ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рд╣реИрдВ: рдбреНрд░рд╛рдЗрд╡рд░ рдФрд░ рдореЙрдирд┐рдЯрд░ред
рдЪрд╛рд▓рдХ - рдлрд╝рд╛рдЗрд▓ drv.h, drv.svhред рдПрдХ рд╡рд░реНрдЧ рдЬреЛ рдПрдХ рдЕрдиреБрдХреНрд░рдордХ рд╕реЗ рд▓реЗрдирджреЗрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХреЗрддреЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рдбреНрд░рд╛рдЗрд╡рд░ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░ рдПрдХ рд╕реАрдХреНрд╡реЗрдВрд╕рд░ рд╕рд╣рд╛рдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдПрдХ рдкреИрдХреЗрдЬ рднреЗрдЬрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЕрдиреБрдХреНрд░рдо рдПрдХ рд▓реЗрдирджреЗрди рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рддрд╛ рд╣реИ, рдЪрд╛рд▓рдХ рдЗрд╕ рдШрдЯрдирд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рд╕реАрдХреНрд╡реЗрдВрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред рдбреНрд░рд╛рдЗрд╡рд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрддреЛрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рд╕реАрдХреНрд╡реЗрдВрд╕рд░ рдХреЛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЦрд┐рдбрд╝рдХреА рдмрдВрдж рд╣реЛ рд╕рдХрддреА рд╣реИред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕реАрдХреНрд╡реЗрдВрд╕рд░ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░ред
рд╕рд┐рдЧреНрдирд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ vip_if.h, vip_if.svh рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рдЕрдкреЗрдХреНрд╖рд┐рдд рд▓реЛрдЧреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рджреЛ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ:
- рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбрд▓ рд▓рд┐рдЦрдирд╛
- рдпреВрд╡реАрдПрдо рдПрдЬреЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рдЧреНрдирд▓ рд╕рддреНрдпрд╛рдкрди
рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕реНрддрд░ рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗрдЯ рд╕рд┐рдЧреНрдирд▓ рдбреНрдпреВрдЯреА рдЪрдХреНрд░ рдФрд░ рд╕рд┐рдЧреНрдирд▓ рдЕрд╡рдзрд┐ рдХреА рд╢реБрджреНрдзрддрд╛ рдереАред рдЖрдЙрдЯрдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдореЙрдирд┐рдЯрд░ (рдлрд╛рдЗрд▓ рдореЙрдирд┐рдЯрд░, рдПрдЪ, рдореЙрдирд┐рдЯрд░.рдПрд╕рд╡реАрдПрдЪ)ред рдЖрдорддреМрд░ рдкрд░, рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рдореЙрдирд┐рдЯрд░ рд▓реЗрдирджреЗрди рдореЗрдВ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рддреБрд▓рдирд╛ рд╡рд░реНрдЧ - рд╕реНрдХреЛрд░рдмреЛрд░реНрдб рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рдВрдХреЗрддреЛрдВ рдХреА рддреБрд░рдВрдд рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдЕрдкреЗрдХреНрд╖рд┐рдд рдореВрд▓реНрдп рдФрд░ рдорд╛рдкрд╛ рдХреЗ рдмреАрдЪ рд╡рд┐рд╕рдВрдЧрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд░реАрдХреНрд╖рдг рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред