ການຈຳລອງຊອບແວ RENESAS ForgeFPGA

ການຈຳລອງຊອບແວ RENESAS ForgeFPGA

ຂໍ້ມູນທີ່ສໍາຄັນ

ການຈໍາລອງແມ່ນເຕັກນິກຂອງການນໍາໃຊ້ການກະຕຸ້ນການປ້ອນຂໍ້ມູນທີ່ແຕກຕ່າງກັນກັບການອອກແບບໃນເວລາທີ່ແຕກຕ່າງກັນເພື່ອກວດເບິ່ງວ່າລະຫັດ RTL ປະຕິບັດວິທີການທີ່ມີຈຸດປະສົງ. ມັນຖືກນໍາໃຊ້ເພື່ອກວດສອບຄວາມທົນທານຂອງການອອກແບບ. ການຈໍາລອງອະນຸຍາດໃຫ້ຜູ້ໃຊ້ view ແຜນວາດເວລາຂອງສັນຍານທີ່ກ່ຽວຂ້ອງເພື່ອເຂົ້າໃຈວິທີການອະທິບາຍການອອກແບບໃນການອອກແບບ file ປະພຶດ.

Testbenches ແມ່ນຊິ້ນສ່ວນຂອງລະຫັດທີ່ຖືກນໍາໃຊ້ສໍາລັບການຈໍາລອງ. A testbench ງ່າຍດາຍຈະເຮັດໃຫ້ຫນ່ວຍງານພາຍໃຕ້ການທົດສອບ (UUT) ທັນທີແລະຂັບລົດການປ້ອນຂໍ້ມູນ. ຊອບແວ Go Configure ໃຊ້ Icarus Verilog (iVerilog) ແລະ GTKWave ເພື່ອສັງເກດການຈໍາລອງຄື້ນຟອງທີ່ມີການກະຕຸ້ນທີ່ສະຫນອງໃຫ້ຢູ່ໃນ testbench.

ເອກະສານນີ້ອະທິບາຍຂັ້ນຕອນທີ່ຕ້ອງເຮັດໃນຂະນະທີ່ຕິດຕັ້ງ Icarus ໃນລະບົບຂອງທ່ານແລະວິທີການດໍາເນີນການຈໍາລອງທີ່ປະສົບຜົນສໍາເລັດ.

ການຕິດຕັ້ງ Icarus Verilog

a. ຕິດຕັ້ງເວີຊັນຫຼ້າສຸດຂອງ Icarus Verilog (IVerilog) ຈາກ https://bleyer.org/icarus/
b. ໃຫ້ແນ່ໃຈວ່າເພີ່ມ IVerilog ໃສ່ PATH ແລະໃຫ້ມັນຕິດຕັ້ງ GTKWave (ເບິ່ງຮູບ 1)
ການຕິດຕັ້ງ Icarus Verilog

c. ເປີດ Go Configure Software ແລະເລືອກສ່ວນ: SLG47910(Rev BB) ເພື່ອເປີດກອງປະຊຸມ Forge (ເບິ່ງຮູບ 2).
ການຕິດຕັ້ງ Icarus Verilog

d. ໃຫ້ຄລິກໃສ່ຕົວແກ້ໄຂ FPGA ຢູ່ເຄິ່ງກາງຂອງແຖບເຄື່ອງມືຢູ່ເທິງສຸດຫຼືຜູ້ໃຊ້ຍັງສາມາດຄລິກສອງຄັ້ງໃສ່ໂຄງສ້າງ FPGA Core ຢູ່ເຄິ່ງກາງຂອງປ່ອງຢ້ຽມ.
ການຕິດຕັ້ງ Icarus Verilog

e. ປ່ອງຢ້ຽມໃຫມ່ເປີດເອີ້ນວ່າ Forge Workshop. ໃນແຖບເຄື່ອງມືເມນູຢູ່ເທິງສຸດ, ໃຫ້ຄລິກໃສ່ຕົວເລືອກ → ການຕັ້ງຄ່າ. ໃນກ່ອງໂຕ້ຕອບການຕັ້ງຄ່າ, ໄປທີ່ເຄື່ອງມືພາຍໃຕ້ແຖບການຕັ້ງຄ່າຜູ້ໃຊ້. ຍົກເລີກການເລືອກກ່ອງ "ສະພາບແວດລ້ອມລະບົບ" ສໍາລັບທັງ Icarus Verilog ແລະ GTKWave. ເພີ່ມເສັ້ນທາງໄປຫາ Iverilog ແລະ GTKWave ທີ່ບັນທຶກໄວ້ໃນລະບົບຂອງທ່ານເຂົ້າໄປໃນພື້ນທີ່ທີ່ໄດ້ຮັບ (ເບິ່ງຮູບ 4).
ການຕິດຕັ້ງ Icarus Verilog

ທ່ານໄດ້ຖືກຕັ້ງໄວ້ທັງຫມົດເພື່ອຈໍາລອງ testbench ແລະຂັ້ນຕອນຂ້າງເທິງນີ້ໃຫ້ແນ່ໃຈວ່າ GTKWave ເປີດຕົວໂດຍອັດຕະໂນມັດເມື່ອ simulate testbench ໃນ Go Configure software.

Testbench

ຂັ້ນຕອນທີ່ສໍາຄັນທີ່ສຸດໃນການປະຕິບັດລະບົບໃດຫນຶ່ງຢ່າງສໍາເລັດຜົນແມ່ນເພື່ອກວດສອບການອອກແບບແລະການທໍາງານຂອງມັນ. ການກວດສອບລະບົບສະລັບສັບຊ້ອນຫຼັງຈາກປະຕິບັດຮາດແວບໍ່ແມ່ນທາງເລືອກທີ່ສະຫລາດ. ມັນບໍ່ມີປະສິດທິພາບທາງດ້ານເງິນ, ເວລາ, ແລະຊັບພະຍາກອນ. ດັ່ງນັ້ນ, ໃນກໍລະນີຂອງ FPGA, testbench ຖືກນໍາໃຊ້ເພື່ອທົດສອບລະຫັດແຫຼ່ງ Verilog.

ສົມມຸດວ່າພວກເຮົາມີ input ທີ່ມີ 11 bits, ແລະພວກເຮົາຕ້ອງການທີ່ຈະທົດສອບອຸປະກອນສໍາລັບຄ່າປະສົມປະສານການປ້ອນຂໍ້ມູນທີ່ເປັນໄປໄດ້ທັງຫມົດ ie (211). ເນື່ອງຈາກວ່ານີ້ແມ່ນການປະສົມຈໍານວນຫລາຍ, ມັນເປັນໄປບໍ່ໄດ້ທີ່ຈະທົດສອບດ້ວຍຕົນເອງ. ໃນກໍລະນີດັ່ງກ່າວ, testbenches ມີປະໂຫຍດຫຼາຍຍ້ອນວ່າທ່ານສາມາດທົດສອບການອອກແບບອັດຕະໂນມັດສໍາລັບມູນຄ່າທີ່ເປັນໄປໄດ້ທັງຫມົດແລະເພາະສະນັ້ນ, ຢືນຢັນຄວາມຫນ້າເຊື່ອຖືຂອງການອອກແບບການທົດສອບ. Verilog Testbenches ຖືກນໍາໃຊ້ເພື່ອຈໍາລອງແລະວິເຄາະການອອກແບບໂດຍບໍ່ຈໍາເປັນຕ້ອງມີອຸປະກອນຮາດແວທາງດ້ານຮ່າງກາຍໃດໆ.

ການອອກແບບພາຍໃຕ້ການທົດສອບ, ຫຍໍ້ເປັນ DUT, ແມ່ນໂມດູນສັງເຄາະຂອງຫນ້າທີ່ພວກເຮົາຕ້ອງການທົດສອບ. ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ມັນແມ່ນການອອກແບບວົງຈອນທີ່ພວກເຮົາຢາກຈະທົດສອບ. ພວກເຮົາສາມາດອະທິບາຍ DUT ຂອງພວກເຮົາໂດຍໃຊ້ຫນຶ່ງໃນສາມແບບຈໍາລອງໃນ Verilog - Gate-level, Dataflow, ຫຼື Behavioral.

A testbench ແມ່ນບໍ່ສາມາດສັງເຄາະໄດ້, ສະນັ້ນມັນຖືກນໍາໃຊ້ເພື່ອຈຸດປະສົງການຈໍາລອງເທົ່ານັ້ນ. ນີ້ອະນຸຍາດໃຫ້ຜູ້ໃຊ້ໃຊ້ Verilog constructs ເຕັມຮູບແບບເຊັ່ນ: ຄໍາສໍາຄັນເຊັ່ນ "ສໍາລັບ", "$display" ແລະ "$monitor" ແລະອື່ນໆສໍາລັບການຂຽນ testbenches. A testbench ງ່າຍດາຍຈະເຮັດໃຫ້ຫນ່ວຍງານພາຍໃຕ້ການທົດສອບ (UUT) ຫຼືອຸປະກອນພາຍໃຕ້ການທົດສອບ (DUT) ແລະຂັບ inputs.

ຄວາມເຂົ້າໃຈ Testbench

ຄວາມເຂົ້າໃຈ Testbench

ຄໍານິຍາມຂະຫນາດເວລາໃນ Testbench

ໃນເວລາທີ່ຈໍາລອງ, ຊອບແວຈໍາເປັນຕ້ອງຮູ້ວ່າເວລາໄດ້ຖືກກໍານົດແນວໃດ. ຫນ່ວຍຄວາມລ່າຊ້າແມ່ນລະບຸໄວ້ໂດຍໃຊ້ 'ຄໍາສັ່ງຂະຫນາດເວລາ, ເຊິ່ງລະບຸຫນ່ວຍເວລາແລະຄວາມແມ່ນຍໍາສໍາລັບໂມດູນທີ່ປະຕິບັດຕາມມັນ. `ໄລຍະເວລາຊ່ວຍໃນການກໍານົດສິ່ງທີ່ #1 ຫມາຍຄວາມວ່າໃນແງ່ຂອງເວລາ. # ຖືກນໍາໃຊ້ເພື່ອກໍານົດຄວາມລ່າຊ້າທີ່ຈະນໍາສະເຫນີໃນລະບົບໂດຍສອດຄ່ອງກັບຫນ່ວຍງານເວລາທີ່ກໍານົດໄວ້ໃນຂະຫນາດເວລາ. ດັ່ງນັ້ນ, #1 ຫມາຍຄວາມວ່າ 1 ns ຂອງການຊັກຊ້າຖ້າ time_unit ຢູ່ໃນ ns.

syntax:
`ເວລາ / /

time_unit ແມ່ນຈໍານວນເວລາທີ່ຊັກຊ້າຂອງ #1 ເປັນຕົວແທນ. ພື້ນຖານ time_precision ສະແດງເຖິງຈຳນວນຈຸດທົດສະນິຍົມຂອງຄວາມແມ່ນຍໍາທີ່ຈະໃຊ້ທຽບກັບຫົວໜ່ວຍເວລາ. (ເບິ່ງແຖວທີ 23 ໃນຮູບ 5)

ພວກເຮົາສາມາດນໍາໃຊ້ການກໍ່ສ້າງຂະຫນາດເວລາເພື່ອນໍາໃຊ້ຫນ່ວຍງານເວລາທີ່ແຕກຕ່າງກັນໃນການອອກແບບດຽວກັນ. ຜູ້ໃຊ້ຈໍາເປັນຕ້ອງຈື່ຈໍາໄວ້ວ່າຂໍ້ກໍານົດການຊັກຊ້າແມ່ນບໍ່ສາມາດສັງເຄາະໄດ້ແລະບໍ່ສາມາດປ່ຽນເປັນເຫດຜົນຂອງຮາດແວ. ຫນ້າທີ່ການຊັກຊ້າແມ່ນທັງຫມົດສໍາລັບຈຸດປະສົງການຈໍາລອງ. $ເວລາ ແລະ $ເວລາຈິງ ຟັງຊັນຂອງລະບົບສົ່ງຄືນເວລາປະຈຸບັນ ແລະຮູບແບບການລາຍງານເລີ່ມຕົ້ນສາມາດປ່ຽນແປງໄດ້ດ້ວຍໜ້າວຽກລະບົບອື່ນ $timeformat .

Example: 

ໄລຍະເວລາ 10us/100ns
`ໄລຍະເວລາ 1ns/1ps
#10 ປັບ = 1; // ຊັກຊ້າສັນຍານໂດຍ 10 ns
#0.49 $display(“T = %0t ໃນເວລາ #0.49”, $realtime);

ຄວາມລ່າຊ້າທີ່ລະບຸໄວ້ແມ່ນ #0.49 ເຊິ່ງໜ້ອຍກວ່າເຄິ່ງໜ່ວຍເວລາ. ຢ່າງໃດກໍ່ຕາມ, ຄວາມແມ່ນຍໍາຂອງເວລາແມ່ນຖືກກໍານົດໄວ້ເປັນ 1ps ແລະດັ່ງນັ້ນ simulator ບໍ່ສາມາດໄປຂະຫນາດນ້ອຍກວ່າ 1ns ເຊິ່ງເຮັດໃຫ້ມັນໄປຮອບຄໍາຖະແຫຼງການຊັກຊ້າແລະຜົນຜະລິດ 0ns. ດັ່ງນັ້ນ, ຄໍາຖະແຫຼງການນີ້ບໍ່ສາມາດສະຫນອງການຊັກຊ້າໃດໆ.

ບັນທຶກການຈຳລອງ: 

T = 1 ເວລາ #0.49

ການປະກາດໂມດູນ

ການປະກາດໂມດູນໃນ testbench ໃດກໍ່ຕາມແມ່ນແຕກຕ່າງຈາກລະຫັດ Verilog ຕົ້ນຕໍ. ໃນ testbench, ໂມດູນໄດ້ຖືກປະກາດໂດຍບໍ່ມີພອດ terminal ພ້ອມກັບມັນ. (ເບິ່ງແຖວທີ 25 ໃນຮູບ 5)

syntax: 

ໂມດູນ ;

ການປະກາດໂມດູນແມ່ນປະຕິບັດຕາມໂດຍການກໍານົດສັນຍານຂາເຂົ້າແລະຜົນຜະລິດທີ່ໄດ້ກໍານົດໄວ້ກ່ອນຫນ້ານີ້ໃນການອອກແບບຕົ້ນຕໍ file.
ພວກເຮົານໍາໃຊ້ສອງປະເພດສັນຍານສໍາລັບການຂັບລົດແລະສັນຍານການຕິດຕາມໃນລະຫວ່າງການຈໍາລອງ. ປະເພດຂໍ້ມູນ reg ຈະຖືຄ່າໄວ້ຈົນກ່ວາຄ່າໃຫມ່ຖືກມອບຫມາຍໃຫ້ມັນ. ປະເພດຂໍ້ມູນນີ້ສາມາດຖືກມອບຫມາຍເປັນຄ່າພຽງແຕ່ຢູ່ໃນບລັອກສະເຫມີຫຼືເບື້ອງຕົ້ນເທົ່ານັ້ນ.
ປະເພດຂອງຂໍ້ມູນສາຍແມ່ນຄ້າຍຄືກັບການເຊື່ອມຕໍ່ທາງດ້ານຮ່າງກາຍ. ມັນຈະຖືມູນຄ່າທີ່ຖືກຂັບເຄື່ອນໂດຍພອດ, ມອບຫມາຍຄໍາສັ່ງ, ຫຼື reg. ປະເພດຂໍ້ມູນນີ້ບໍ່ສາມາດຖືກນໍາໃຊ້ໃນເບື້ອງຕົ້ນຫຼືຖືກບລັອກຕະຫຼອດເວລາ. ການປະກາດພາລາມິເຕີໃດນຶ່ງ ແລະຈຳນວນເຕັມແມ່ນເຮັດຢູ່ໃນພາກນີ້.

Example:
Reg a,b; // ການປ້ອນຂໍ້ມູນໃນລະຫັດ HDL ຖືກກໍານົດເປັນ reg ໃນ testbench
ສາຍ y; // ສັນຍານຜົນຜະລິດໃນ HDL ຖືກກໍານົດເປັນສາຍໃນ testbench

DUT Instantion

ຈຸດປະສົງຂອງ testbench ແມ່ນເພື່ອກວດສອບວ່າໂມດູນ DUT ຂອງພວກເຮົາເຮັດວຽກຫຼືບໍ່. ເພາະສະນັ້ນ, ພວກເຮົາຈໍາເປັນຕ້ອງໄດ້ instantiate ໂມດູນການອອກແບບຂອງພວກເຮົາເພື່ອທົດສອບໂມດູນ.

syntax: 

(. (ສັນຍານ1), . signal1>(signal2));

Example:

ALU d0 (.a(a), // ສັນຍານ “a” ໃນ ALU ຄວນເຊື່ອມຕໍ່ກັບ “a” ໃນໂມດູນ ALU_tb
.b(b), // ສັນຍານ “b” ໃນ ALU ຄວນເຊື່ອມຕໍ່ກັບ “b” ໃນໂມດູນ ALU_tb
.c(c));// ສັນຍານ “c” ໃນ ALU ຄວນເຊື່ອມຕໍ່ກັບ “c” ໃນໂມດູນ ALU_tb

ພວກເຮົາໄດ້ສົ່ງໂມດູນ DUT ALU ໃຫ້ກັບໂມດູນການທົດສອບ. ຊື່ຕົວຢ່າງ (d0) ແມ່ນທາງເລືອກຂອງຜູ້ໃຊ້. ສັນຍານທີ່ມີໄລຍະເວລາ "." ຢູ່ທາງຫນ້າຂອງພວກເຂົາແມ່ນຊື່ຂອງສັນຍານພາຍໃນໂມດູນ ALU, ໃນຂະນະທີ່ສາຍຫຼື reg ທີ່ພວກເຂົາເຊື່ອມຕໍ່ຢູ່ໃນຫ້ອງທົດລອງແມ່ນຢູ່ຂ້າງສັນຍານໃນວົງເລັບ (). ແນະນໍາໃຫ້ໃສ່ລະຫັດການເຊື່ອມຕໍ່ແຕ່ລະພອດໃນແຖວແຍກຕ່າງຫາກເພື່ອໃຫ້ຂໍ້ຄວາມຜິດພາດການລວບລວມຂໍ້ມູນຈະຊີ້ໄປຫາຈໍານວນແຖວທີ່ຂໍ້ຜິດພາດເກີດຂຶ້ນ. ເນື່ອງຈາກວ່າການເຊື່ອມຕໍ່ເຫຼົ່ານີ້ຖືກສ້າງຂື້ນໂດຍຊື່, ຄໍາສັ່ງທີ່ພວກເຂົາປາກົດແມ່ນບໍ່ກ່ຽວຂ້ອງ.

DUT instantiation ຍັງສາມາດຖືກສ້າງຂື້ນສໍາລັບໂມດູນທີ່ໂມດູນ testbench ມີຊື່ສັນຍານທີ່ແຕກຕ່າງກັນ. ການສ້າງແຜນທີ່ທີ່ຖືກຕ້ອງຂອງສັນຍານແມ່ນສິ່ງທີ່ສໍາຄັນໃນເວລາທີ່ instantiating.

Example: 

ALU d0 (.a(A), // ສັນຍານ “a” ໃນ ALU ຄວນເຊື່ອມຕໍ່ກັບ “A” ໃນໂມດູນ ALU_tb
.clk(ໂມງ), // ສັນຍານ “clk” ໃນ ALU ຄວນເຊື່ອມຕໍ່ກັບ “ໂມງ” ໂມດູນ ALU_tb.
.out(OUT)); // ສັນຍານ "ອອກ" ໃນ ALU ຄວນເຊື່ອມຕໍ່ກັບ "OUT" ໃນໂມດູນ ALU_tb

ສະເຫມີ & Initial Block ໃນ Testbench

ມີສອງຕັນຕາມລໍາດັບໃນ Verilog, ເບື້ອງຕົ້ນແລະສະເຫມີ. ມັນແມ່ນຢູ່ໃນຕັນເຫຼົ່ານີ້ທີ່ພວກເຮົານໍາໃຊ້ການກະຕຸ້ນ.

ຕັນເບື້ອງຕົ້ນ

ຕັນເບື້ອງຕົ້ນທີ່ຖືກປະຕິບັດພຽງແຕ່ຄັ້ງດຽວແລະສິ້ນສຸດລົງເມື່ອເສັ້ນສຸດທ້າຍຂອງບລັອກຖືກປະຕິບັດ. ການກະຕຸ້ນແມ່ນຂຽນເຂົ້າໄປໃນຕັນເບື້ອງຕົ້ນ. (ເບິ່ງເສັ້ນ 54-72 ໃນຮູບ 5)

syntax:
..
ເລີ່ມ​ຕົ້ນ
$dumpfile();
$dumpvars();
..(ເຂົ້າກະຕຸ້ນ)
ສິ້ນສຸດ

ຕັນເບື້ອງຕົ້ນເລີ່ມຕົ້ນການປະຕິບັດຂອງມັນໃນຕອນເລີ່ມຕົ້ນຂອງການຈໍາລອງໃນເວລາ t = 0. ເລີ່ມຕົ້ນດ້ວຍເສັ້ນທໍາອິດລະຫວ່າງຈຸດເລີ່ມຕົ້ນແລະສິ້ນສຸດ, ແຕ່ລະເສັ້ນປະຕິບັດຈາກເທິງຫາລຸ່ມຈົນກ່ວາຄວາມລ່າຊ້າແມ່ນບັນລຸໄດ້. ເມື່ອເຖິງຄວາມລ່າຊ້າ, ການປະຕິບັດຂອງຕັນນີ້ລໍຖ້າຈົນກ່ວາເວລາຊັກຊ້າ (10 ຫນ່ວຍເວລາ) ໄດ້ຜ່ານໄປແລະຫຼັງຈາກນັ້ນເລືອກເອົາການປະຕິບັດອີກເທື່ອຫນຶ່ງ.
ຜູ້ໃຊ້ສາມາດກໍານົດ stimuli ໂດຍໃຊ້ loops (ສໍາລັບ, ໃນຂະນະທີ່, if-else) ເຊັ່ນດຽວກັນພາຍໃນຕັນເບື້ອງຕົ້ນນີ້ແທນທີ່ຈະເຂົ້າໄປໃນການປະສົມທັງຫມົດດ້ວຍຕົນເອງ.
ຕັນເບື້ອງຕົ້ນ

 

Example:
ການ​ເລີ່ມ​ຕົ້ນ​
A = 0; b = 0; // ເລີ່ມ​ການ​ປະ​ຕິ​ບັດ​
#10 a = 0; b = 1; // ການປະຕິບັດແມ່ນຢູ່ທີ່ t = 10-unit time
#10 a = 1; b = 0; // ການປະຕິບັດແມ່ນຢູ່ທີ່ t = 20-unit time
ສິ້ນສຸດ

ຖິ້ມຂີ້ເຫຍື້ອ Files

ສິ່ງອື່ນທີ່ຕ້ອງຢູ່ໃນໃຈແມ່ນການປະກາດຂອງ $ຖິ້ມfiles ແລະ $dumpvars ພາຍໃນທ່ອນໄມ້ເບື້ອງຕົ້ນ (ເບິ່ງເສັ້ນ 55- 56 ໃນຮູບ 5). ໄດ້ $ຖິ້ມfile ຖືກນໍາໃຊ້ເພື່ອ dump ການປ່ຽນແປງໃນມູນຄ່າຂອງ nets ແລະລົງທະບຽນໃນ a file ທີ່ມີຊື່ວ່າເປັນການໂຕ້ຖຽງຂອງມັນ.

ຕົວຢ່າງample:

$ຖິ້ມfile(“alu_tb.vcd”);

ຈະຖິ້ມການປ່ຽນແປງໃນ a file ຊື່ alu_tb.vcd. ການປ່ຽນແປງໄດ້ຖືກບັນທຶກໄວ້ໃນ a file ເອີ້ນວ່າ VCD file ທີ່ຢືນສໍາລັບການ dump ການປ່ຽນແປງມູນຄ່າ. ແຜ່ນວີຊີດີ (ການຖິ້ມການປ່ຽນແປງມູນຄ່າ) ເກັບຂໍ້ມູນທັງໝົດກ່ຽວກັບການປ່ຽນແປງມູນຄ່າ. ພວກເຮົາບໍ່ສາມາດມີຫຼາຍກວ່າຫນຶ່ງ $dumpfile ຖະແຫຼງການໃນການຈໍາລອງ Verilog.

ໄດ້ $dumpvars ຖືກນໍາໃຊ້ເພື່ອກໍານົດວ່າຕົວແປໃດທີ່ຈະຖືກຖິ້ມ (ໃນ file ກ່າວໂດຍ $dumpfile). ວິທີທີ່ງ່າຍທີ່ສຸດທີ່ຈະໃຊ້ມັນແມ່ນໂດຍບໍ່ມີການໂຕ້ຖຽງໃດໆ. syntax ທົ່ວໄປຂອງ $dumpvars ແມ່ນ

$dumpvars ( <, >);

ໂດຍພື້ນຖານແລ້ວພວກເຮົາສາມາດລະບຸວ່າໂມດູນໃດ, ແລະຕົວແປໃດໃນໂມດູນຈະຖືກຖິ້ມ. ວິທີທີ່ງ່າຍທີ່ສຸດທີ່ຈະໃຊ້ນີ້ແມ່ນການກໍານົດລະດັບເປັນ 0 ແລະຊື່ໂມດູນເປັນໂມດູນເທິງ (ໂດຍປົກກະຕິແມ່ນໂມດູນ testbench ເທິງ).

$dumpvars(0, alu_tb);

ເມື່ອລະດັບຖືກຕັ້ງເປັນ 0, ແລະພຽງແຕ່ລະບຸຊື່ໂມດູນ, ມັນຈະຖິ້ມທຸກຕົວແປຂອງໂມດູນນັ້ນແລະຕົວແປທັງຫມົດໃນທຸກໂມດູນລະດັບຕ່ໍາທີ່ທັນທີໂດຍໂມດູນເທິງນີ້. ຖ້າໂມດູນໃດ ໜຶ່ງ ທີ່ບໍ່ທັນສະ ໄໝ ໂດຍໂມດູນເທິງນີ້, ຕົວແປຂອງມັນຈະບໍ່ຖືກປົກຄຸມ. ສິ່ງຫນຶ່ງຫຼາຍ, ການປະກາດຂອງ $ຖິ້ມfile ຕ້ອງມາກ່ອນ $dumpvars ຫຼືວຽກງານລະບົບອື່ນໆທີ່ລະບຸການ dump. ການຖິ້ມຂີ້ເຫຍື້ອເຫຼົ່ານີ້ files ຕ້ອງໄດ້ຮັບການປະກາດກ່ອນການກະຕຸ້ນການປ້ອນຂໍ້ມູນອື່ນ, ບໍ່ມີຄຸນຄ່າຈະຖືກບັນທຶກໄວ້ໃນ dump ເຫຼົ່ານີ້. files.

ບລັອກສະເໝີ

ກົງກັນຂ້າມກັບຄໍາຖະແຫຼງການເບື້ອງຕົ້ນ, ຕັນສະເຫມີປະຕິບັດຊ້ໍາກັນ, ເຖິງແມ່ນວ່າການປະຕິບັດເລີ່ມຕົ້ນໃນເວລາ t = 0. ສໍາລັບ ex.ampດັ່ງນັ້ນ, ສັນຍານໂມງແມ່ນມີຄວາມຈໍາເປັນສໍາລັບການດໍາເນີນງານຂອງວົງຈອນຕາມລໍາດັບເຊັ່ນ Flip-flops. ມັນຈໍາເປັນຕ້ອງໄດ້ສະຫນອງຢ່າງຕໍ່ເນື່ອງ. ດັ່ງນັ້ນ, ພວກເຮົາສາມາດຂຽນລະຫັດສໍາລັບການເຮັດວຽກຂອງໂມງໃນ testbench ເປັນ (ເບິ່ງເສັ້ນ 52 ໃນຮູບ 5):

ສະເໝີ
#10 clk = ~clk;
ໂມດູນສຸດທ້າຍ

ຄໍາຖະແຫຼງທີ່ຂ້າງເທິງໄດ້ຮັບການປະຕິບັດຫຼັງຈາກ 10 ns ເລີ່ມຈາກ t = 0. ມູນຄ່າຂອງ clk ຈະໄດ້ຮັບການ inverted ຫຼັງຈາກ 10 ns ຈາກຄ່າທີ່ຜ່ານມາ. ດັ່ງນັ້ນ, ການສ້າງສັນຍານໂມງຂອງ 20 ns pulse width. ດັ່ງນັ້ນ, ຄໍາຖະແຫຼງນີ້ສ້າງສັນຍານຂອງຄວາມຖີ່ 50 MHz. ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະສັງເກດວ່າ, ການເລີ່ມຕົ້ນຂອງສັນຍານແມ່ນເຮັດກ່ອນທີ່ຈະຕັນສະເຫມີ. ຖ້າພວກເຮົາບໍ່ເຮັດພາກສ່ວນເບື້ອງຕົ້ນ, ສັນຍານ clk ຈະເປັນ x ຈາກ t – 0, ແລະຫຼັງຈາກ 10 ns, ມັນຈະຖືກປ່ຽນກັບ x ອື່ນ.

ການ​ກວດ​ສອບ​ຕົນ​ເອງ Testbench​

A testbench ການ​ກວດ​ສອບ​ຕົນ​ເອງ​ປະ​ກອບ​ມີ​ຄໍາ​ຖະ​ແຫຼງ​ການ​ເພື່ອ​ກວດ​ກາ​ເບິ່ງ​ສະ​ຖາ​ນະ​ການ​ໃນ​ປັດ​ຈຸ​ບັນ​.

  • $ຈໍສະແດງຜົນ ວຽກງານຂອງລະບົບສ່ວນໃຫຍ່ແມ່ນໃຊ້ເພື່ອສະແດງຂໍ້ຄວາມ debug ເພື່ອຕິດຕາມການໄຫຼເຂົ້າຂອງການຈໍາລອງ

ເລີ່ມ​ຕົ້ນ
A = 0 ; b = 0 ; c = 0; #10; // ນຳໃຊ້ການປ້ອນຂໍ້ມູນ, ລໍຖ້າ
ຖ້າ (y ! == 1) ເລີ່ມຕົ້ນ
$display(“000 ລົ້ມເຫລວ”); // ກວດ​ສອບ
c = 1; #10 ; // ນຳໃຊ້ການປ້ອນຂໍ້ມູນ, ລໍຖ້າ
ສິ້ນສຸດ
ອື່ນຖ້າ (y ! == 0) ເລີ່ມຕົ້ນ
$display(“001 ລົ້ມເຫລວ”) // check
b = 1; c = 0; #10 ; ສິ້ນສຸດ
ອື່ນຖ້າ(y!==0)
$display (“010 ລົ້ມເຫລວ”); // ກວດ​ສອບ
ສິ້ນສຸດ
ໂມດູນສຸດທ້າຍ

$ຈໍສະແດງຜົນ ຖືກນໍາໃຊ້ເພື່ອສະແດງຄ່າຂອງຕົວແປ, ສະຕຣິງ, ຫຼືການສະແດງອອກ. ຈາກຂ້າງເທິງ example, ເມື່ອໃດກໍ່ຕາມຂອງ loop if-else ມີຄວາມພໍໃຈ, ຫຼັງຈາກນັ້ນບັນທຶກ simulator ຈະສະແດງ $ ຂອງຕົນຕາມລໍາດັບຈໍສະແດງຜົນ ຖະແຫຼງການ. ມີແຖວໃໝ່ຕາມຄ່າເລີ່ມຕົ້ນໃນຕອນທ້າຍຂອງສາຍ.

$ຈໍສະແດງຜົນ (“ເວລາ = %t , A = %b, B = %b, C = % b”, $ເວລາ, A,B,C);

ຕົວ​ອັກ​ສອນ​ທີ່​ໄດ້​ກ່າວ​ມາ​ໃນ​ວົງ​ຢືມ​ຈະ​ໄດ້​ຮັບ​ການ​ພິມ​ອອກ​ເປັນ​. ຕົວອັກສອນພ້ອມກັບ % ໝາຍເຖິງຮູບແບບສະຕຣິງ. ພວກເຮົາໃຊ້ %b ເພື່ອສະແດງຂໍ້ມູນຖານສອງ. ພວກເຮົາສາມາດໃຊ້ %d, %h, %o ເພື່ອສະແດງຕົວເລກທົດສະນິຍົມ, ເລກຖານສິບຫົກ, ແລະເລກແປດ, ຕາມລໍາດັບ. %g ແມ່ນໃຊ້ເພື່ອສະແດງຕົວເລກທີ່ແທ້ຈິງ. ສິ່ງເຫຼົ່ານີ້ຈະຖືກແທນທີ່ດ້ວຍຄ່ານອກວົງຢືມໃນຄໍາສັ່ງທີ່ໄດ້ກ່າວມາ. ຕົວຢ່າງample, ຄໍາຖະແຫຼງຂ້າງເທິງຈະຖືກສະແດງຢູ່ໃນບັນທຶກການຈໍາລອງເປັນ: ເວລາ = 20, A = 0, B = 1, C = 0.

ຕາຕະລາງ 1. ຮູບແບບຕາຕະລາງ Verilog

ການໂຕ້ຖຽງ ລາຍລະອຽດ
%h, %H ສະແດງຢູ່ໃນຮູບແບບເລກຖານສິບຫົກ
%d, %D ສະແດງຢູ່ໃນຮູບແບບທົດສະນິຍົມ
%b, %B ສະແດງຢູ່ໃນຮູບແບບຖານສອງ
%m, %M ສະແດງຊື່ຕາມລຳດັບ
%s, %S ສະແດງເປັນສະຕຣິງ
%t, %T ສະແດງໃນຮູບແບບເວລາ
%f, %F ສະແດງ 'ຈິງ' ໃນຮູບແບບທົດສະນິຍົມ
%e, %E ສະແດງ 'ຈິງ' ໃນຮູບແບບເລກກຳລັງ

$ຈໍສະແດງຜົນ ສ່ວນໃຫຍ່ພິມຂໍ້ມູນຫຼືຕົວແປຍ້ອນວ່າມັນຢູ່ໃນທັນທີຂອງເວລານັ້ນເຊັ່ນ printf ໃນ C. ພວກເຮົາຕ້ອງກ່າວເຖິງ $ຈໍສະແດງຜົນ ສໍາລັບຂໍ້ຄວາມໃດກໍ່ຕາມທີ່ພວກເຮົາຕ້ອງ view ໃນບັນທຶກການຈໍາລອງ.

  • $ເວລາ

$ເວລາ ແມ່ນວຽກງານຂອງລະບົບທີ່ຈະກັບຄືນເວລາປະຈຸບັນຂອງການຈໍາລອງ.

  • $ຕິດຕາມກວດກາ

$ຕິດຕາມກວດກາ ຈະຕິດຕາມກວດກາຂໍ້ມູນຫຼືຕົວແປທີ່ມັນຖືກຂຽນແລະທຸກຄັ້ງທີ່ມີການປ່ຽນແປງຕົວແປ, ມັນຈະພິມ
ມູນຄ່າການປ່ຽນແປງ. ມັນບັນລຸຜົນກະທົບທີ່ຄ້າຍຄືກັນຂອງການໂທຫາ $display ຫຼັງຈາກທຸກໆຄັ້ງທີ່ມີການໂຕ້ຖຽງຂອງມັນ
ອັບເດດ. $ຕິດຕາມກວດກາ ແມ່ນຄ້າຍຄືວຽກງານທີ່ spawned ເພື່ອດໍາເນີນການໃນພື້ນຖານຂອງກະທູ້ຕົ້ນຕໍທີ່ຕິດຕາມກວດກາແລະ
ສະແດງການປ່ຽນແປງມູນຄ່າຂອງຕົວແປ argument ຂອງມັນ. $ຕິດຕາມກວດກາ ມີ syntax ດຽວກັນກັບ $ຈໍສະແດງຜົນ.

$ຕິດຕາມກວດກາ(“ເວລາ = %t, A = %b, B = %b, C = % b”, $ເວລາ, A,B,C);
ການ​ກວດ​ສອບ​ຕົນ​ເອງ Testbench​

ຈາກຮູບທີ 7 ທ່ານສາມາດສັງເກດເຫັນວ່າເສັ້ນໃຫມ່ຂອງລະຫັດໄດ້ຖືກເພີ່ມເຂົ້າໃນການປະເມີນຕົນເອງຂອງ testbench. ການຈັດວາງຂອງ $ຈໍສະແດງຜົນ ແລະ $ຕິດຕາມກວດກາ ຖະແຫຼງການໃນພາກສ່ວນຕ່າງໆຂອງ testbench ຈະເຮັດໃຫ້ຜົນໄດ້ຮັບທີ່ແຕກຕ່າງກັນ (ເບິ່ງຮູບ 8). $ເວລາ ທີ່ໄດ້ກ່າວມາໃນຄໍາຖະແຫຼງເຫຼົ່ານີ້ພິມເວລາທີ່ມູນຄ່າກໍາລັງຖືກພິມອອກ. ໃນເວລາດຽວກັນຫນ່ວຍງານເວົ້າວ່າ 170000, ພວກເຮົາສາມາດເຫັນໄດ້ວ່າມີຄວາມແຕກຕ່າງໃນມູນຄ່າສໍາລັບ A ແລະ B ເນື່ອງຈາກ $ຈໍສະແດງຜົນ ແລະ $ຕິດຕາມກວດກາ ຖະແຫຼງການ.
ການ​ກວດ​ສອບ​ຕົນ​ເອງ Testbench​

ຊອບແວ GTKWave

GTKWave ເປັນຄື້ນ GTK+ ທີ່ມີຄຸນສົມບັດຄົບຖ້ວນ viewer ສໍາລັບ Unix, Win32, ແລະ Mac OSX ທີ່ອ່ານ LXT, LXT2, VZT, FST, ແລະ GHW files ເຊັ່ນດຽວກັນກັບ VCD / EVCD ມາດຕະຖານ files ແລະອະນຸຍາດໃຫ້ຂອງເຂົາເຈົ້າ viewing. ຢ່າງເປັນທາງການຂອງຕົນ webເວັບໄຊຢູ່ທີ່ http://gtkwave.sourceforge.net/ . GTKWave ແມ່ນແນະນໍາ viewer ໂດຍ Icarus Verilog ເຄື່ອງມືຈໍາລອງ.

ເມື່ອຜູ້ໃຊ້ຖືກສ້າງຂື້ນຢ່າງສໍາເລັດຜົນ testbench ເພື່ອທົດສອບການເຮັດວຽກຂອງການອອກແບບ, ຜູ້ໃຊ້ສາມາດໃຊ້ຊອບແວ GTKWave ເພື່ອທົດສອບການເຮັດວຽກຂອງການອອກແບບ. view ຮູບ​ແບບ​ຄື້ນ.

ເພື່ອເປີດຊອບແວ GTKWave ກັບ view ຮູບ​ແບບ​ຄື້ນ​, ຜູ້​ໃຊ້​ຕ້ອງ​ການ​ໃຫ້​ຄລິກ​ໃສ່ Simulate Testbench ປຸ່ມ​ຢູ່​ດ້ານ​ເທິງ​ຂອງ​ແຖບ​ເຄື່ອງ​ມື​ຫຼື​ຈາກ​ເມ​ນູ​ຕົ້ນ​ຕໍ Tools → Simulation → Simulate Testbench​. ຖ້າບໍ່ມີຂໍ້ຜິດພາດ syntax ຫຼັງຈາກນັ້ນຂຶ້ນຢູ່ກັບການອອກແບບ, GTKWave ຄວນຈະຖືກເປີດຕົວໂດຍອັດຕະໂນມັດຫຼືຜົນໄດ້ຮັບຂອງການກະຕຸ້ນໃນ testbench ຈະຖືກສະແດງຢູ່ໃນສ່ວນ Logger ຂອງປ່ອງຢ້ຽມ.

ຊອບແວ GTKWave ເປີດການຖິ້ມຮູບແບບ .vcdfile ອັດຕະໂນມັດ. ປ່ອງຢ້ຽມ GTKWave ບໍ່ສະແດງຮູບແບບຄື້ນເມື່ອມັນເປີດ. ນີ້ເຮັດໃຫ້ຜູ້ໃຊ້ໂອກາດທີ່ຈະເລືອກເອົາສັນຍານທີ່ມັນຕ້ອງການ view ແລະສັງເກດ. ເພື່ອເລືອກສັນຍານ, ຜູ້ໃຊ້ຕ້ອງການສະແດງ, ຜູ້ໃຊ້ຕ້ອງການຄລິກໃສ່ຊື່ຂອງໂມດູນ / ຕົວຢ່າງຂອງພວກເຂົາຢູ່ເບື້ອງຊ້າຍຂອງປ່ອງຢ້ຽມພາຍໃຕ້ແຖບ SST. ໂດຍການຄລິກທີ່ + ຂອງທຸກໆຕົວຢ່າງ, ທ່ານສາມາດເບິ່ງສັນຍານທີ່ກ່ຽວຂ້ອງກັນກັບຕົວຢ່າງນັ້ນໃນສ່ວນລຸ່ມ. ຫຼັງ​ຈາກ​ນັ້ນ​, ທ່ານ​ສາ​ມາດ drag ແລະ​ລົງ​ສັນ​ຍານ​ທີ່​ຕ້ອງ​ການ​ຫຼື double ຄລິກ​ໃຫ້​ເຂົາ​ເຈົ້າ​ໄດ້​ຮັບ​ການ​ສະ​ແດງ​ຢູ່​ໃນ​ປ່ອງ​ຢ້ຽມ​ສັນ​ຍານ​. ນອກນັ້ນທ່ານຍັງສາມາດເລືອກທັງຫມົດ (CTRL + A) ແລະໃສ່ພວກມັນໃສ່ປ່ອງຢ້ຽມສັນຍານ (ເບິ່ງຮູບ 9).
ຊອບແວ GTKWave

ດຽວນີ້ສັນຍານຖືກເພີ່ມໃສ່ໜ້າຕ່າງສັນຍານ ແຕ່ມັນຍັງບໍ່ທັນຖືກຈຳລອງເທື່ອ. ຫຼັງ​ຈາກ​ທີ່​ເພີ່ມ​ສັນ​ຍານ​ທີ່​ຕ້ອງ​ການ​ກັບ​ປ່ອງ​ຢ້ຽມ​ສັນ​ຍານ​, ໃຫ້​ຄລິກ​ໃສ່​ສັນຍາລັກ ເພື່ອໃຫ້ເຫມາະສົມກັບສັນຍານກັບຄວາມກວ້າງໃນປະຈຸບັນຂອງປ່ອງຢ້ຽມແລະຫຼັງຈາກນັ້ນໂຫຼດສັນຍານຈາກການໂຫຼດໃຫມ່ສັນຍາລັກ ສັນຍາລັກທີ່ມີຢູ່ໃນແຖບເຄື່ອງມື. ໃນປັດຈຸບັນທ່ານສາມາດເບິ່ງສັນຍານທີ່ມີຄ່າຕາມລໍາດັບຂອງເຂົາເຈົ້າ.

ຄ່າສັນຍານ

ໂດຍຄ່າເລີ່ມຕົ້ນ, ຄ່າຂອງສັນຍານຢູ່ໃນຮູບແບບເລກຖານສິບຫົກ ແລະຄື້ນທັງໝົດມີສີຂຽວ (ຖ້າແລ່ນຖືກຕ້ອງ).

ຜູ້ໃຊ້ສາມາດປ່ຽນຄຸນສົມບັດຂອງສັນຍານເຫຼົ່ານີ້ໂດຍການຄລິກຂວາໃສ່ສັນຍານ ແລະເລືອກຮູບແບບຂໍ້ມູນ ຫຼືຮູບແບບສີ. ຜູ້ໃຊ້ຍັງສາມາດໃສ່ສັນຍານຫວ່າງເປົ່າເພື່ອເຮັດໃຫ້ພາກສ່ວນລະຫວ່າງກຸ່ມຂອງສັນຍານ. ເມື່ອທ່ານມີຜົນ optical ທີ່ຕ້ອງການ, ທ່ານສາມາດບັນທຶກການຕັ້ງຄ່າຂອງທ່ານໂດຍການໄປ File → ຂຽນບັນທຶກ File.

ແຖບເຄື່ອງມື GTKWave

ແຖບເຄື່ອງມື (ເບິ່ງຮູບ 10) ອະນຸຍາດໃຫ້ຜູ້ໃຊ້ປະຕິບັດຫນ້າທີ່ພື້ນຖານສໍາລັບສັນຍານ. ໃຫ້ພວກເຮົາປຶກສາຫາລືແຕ່ລະທາງເລືອກໃນແຖບເຄື່ອງມືຈາກຊ້າຍຫາຂວາ.
ແຖບເຄື່ອງມື GTKWave

  1. ຕົວເລືອກເມນູ: ພາຍໃຕ້ທາງເລືອກນີ້ພວກເຮົາສາມາດເຮັດໄດ້ view ທັງ​ຫມົດ​ລັກ​ສະ​ນະ​ຕ່າງໆ​ຂອງ​ຊອບ​ແວ​ທີ່​ສາ​ມາດ​ຖືກ​ນໍາ​ໃຊ້​ເພື່ອ​ຫຼິ້ນ​ປະ​ມານ​ກັບ​ຊອບ​ແວ​ໄດ້​. ລາຍລະອຽດພາຍໃຕ້ຕົວເລືອກເມນູນີ້ແມ່ນກວມເອົາພາຍໃຕ້ພາກທີ 8 ຂອງຄູ່ມືຜູ້ໃຊ້ນີ້.
  2. ຕັດຕາມຮອຍ: ມັນ​ຖືກ​ນໍາ​ໃຊ້​ເພື່ອ​ລົບ / ຕັດ​ສັນ​ຍານ​ທີ່​ເລືອກ​ຈາກ​ປ່ອງ​ຢ້ຽມ​ສັນ​ຍານ​
  3. ສຳເນົາການຕິດຕາມ: ມັນຖືກນໍາໃຊ້ເພື່ອຄັດລອກສັນຍານທີ່ເລືອກຈາກປ່ອງຢ້ຽມສັນຍານ
  4. ວາງຮ່ອງຮອຍ: ຮ່ອງຮອຍທີ່ຄັດລອກ / ຕັດສາມາດຖືກວາງໄວ້ໃນບ່ອນອື່ນໃນປ່ອງຢ້ຽມສັນຍານ
  5. ຊູມພໍດີ: ມັນຖືກນໍາໃຊ້ເພື່ອໃຫ້ເຫມາະສົມກັບສັນຍານຕາມຂະຫນາດຂອງປ່ອງຢ້ຽມທີ່ຜູ້ໃຊ້ເລືອກທີ່ຈະສະແດງ
  6. ຊູມເຂົ້າ: ມັນຖືກນໍາໃຊ້ເພື່ອຊູມຢູ່ໃນປ່ອງຢ້ຽມສັນຍານ
  7. ຊູມອອກ: ມັນຖືກນໍາໃຊ້ເພື່ອຊູມອອກປ່ອງຢ້ຽມສັນຍານ
  8. ຊູມຍົກເລີກ: ມັນຖືກນໍາໃຊ້ເພື່ອຍົກເລີກການຊູມເຂົ້າ / ອອກຢູ່ໃນປ່ອງຢ້ຽມສັນຍານ
  9. ຊູມເພື່ອເລີ່ມຕົ້ນ: ນີ້ຈະຊູມໜ້າຈໍສັນຍານ, ສະແດງເວລາເລີ່ມຕົ້ນຂອງສັນຍານ.
  10. ຊູມຈົນຈົບ: ນີ້ຈະຊູມໜ້າຈໍສັນຍານສະແດງເວລາສິ້ນສຸດຂອງສັນຍານ
  11. ຊອກຫາຂອບກ່ອນໜ້າ: ອັນນີ້ປ່ຽນເຄື່ອງໝາຍໄປທາງຊ້າຍທີ່ຊີ້ບອກຂອບກ່ອນໜ້າ
  12. ຊອກຫາຂອບຕໍ່ໄປ: ອັນນີ້ປ່ຽນເຄື່ອງໝາຍໄປທາງຂວາຊີ້ບອກຂອບຕໍ່ໄປ
  13. ເລື່ອນພັນທະບັດຕ່ໍາ/ເທິງ: ການນໍາໃຊ້ນີ້ພວກເຮົາສາມາດກໍານົດໄລຍະເວລາທີ່ຜູ້ໃຊ້ຕ້ອງການສະແດງ. ຕົວຢ່າງample, ພວກເຮົາສາມາດກໍານົດເວລາ 0 sec ຫາ 500 ns, ມັນຈະສະແດງສັນຍານພາຍໃຕ້ໄລຍະເວລານັ້ນເທົ່ານັ້ນ.
  14. ໂຫຼດໃໝ່: ການໂຫຼດຄືນໃໝ່ຖືກກົດທຸກຄັ້ງທີ່ມີການປ່ຽນແປງຕໍ່ກັບສັນຍານທີ່ສະແດງ. ມັນຈະໂຫຼດໃຫມ່ແລະສະແດງສັນຍານຕາມຕົວກໍານົດການໃຫມ່. ຕົວຢ່າງample, ຫຼັງຈາກການປ່ຽນແປງໄລຍະເວລາຂອງສັນຍານ, ພວກເຮົາຈໍາເປັນຕ້ອງໂຫຼດສັນຍານໃຫມ່ເພື່ອສະແດງສັນຍານໃນກອບເວລາທີ່ກໍານົດໄວ້ໃຫມ່.

ຕົວເລືອກເມນູ

ຈາກມຸມຊ້າຍເທິງຂອງຊອບແວ GTKWave, ຜູ້ໃຊ້ສາມາດເຂົ້າເຖິງຕົວເລືອກເມນູໂດຍການຄລິກໃສ່ສາມເສັ້ນຕັ້ງ (ເບິ່ງຮູບ 11). ຜູ້ໃຊ້ສາມາດຊອກຫາຕົວເລືອກຕໍ່ໄປນີ້ພາຍໃຕ້ຕົວເລືອກເມນູ:
ຕົວເລືອກເມນູ

File

ໄດ້ File ເມນູຍ່ອຍປະກອບມີລາຍການຕ່າງໆທີ່ກ່ຽວຂ້ອງກັບການເຂົ້າເຖິງ files, ການນໍາເຂົ້າ-ສົ່ງອອກ VCD files, ການພິມ, ແລະການອ່ານ / ຂຽນ files ແລະອອກ.

ແກ້ໄຂ

ເມນູຍ່ອຍ Edit ຖືກນໍາໃຊ້ເພື່ອປະຕິບັດຫນ້າທີ່ເປັນປະໂຫຍດຕ່າງໆເຊັ່ນ: ການປ່ຽນແປງການສະແດງຂໍ້ມູນຂອງຄ່າໃນປ່ອງຍ່ອຍຂອງຄື້ນ. ການນໍາໃຊ້ທາງເລືອກພາຍໃຕ້ເມນູຍ່ອຍແກ້ໄຂ, ຜູ້ໃຊ້ສາມາດປ່ຽນຮູບແບບຂໍ້ມູນຂອງສັນຍານ, ຈັດລຽງໃຫມ່, ປ່ຽນພວກມັນ, ຕັດມັນ, ເນັ້ນມັນ, ສັນຍານກຸ່ມ, ຄໍາເຫັນກ່ຽວກັບສັນຍານ, ປ່ຽນສີຂອງສັນຍານ, ແລະອື່ນໆ.

ຄົ້ນຫາ

ເມນູຍ່ອຍຄົ້ນຫາຖືກນໍາໃຊ້ເພື່ອດໍາເນີນການຄົ້ນຫາຊື່ສຸດທິແລະຄ່າ. ມັນຊ່ວຍປະຕິບັດຫນ້າທີ່ໃນລະດັບລໍາດັບຊັ້ນທີ່ແຕກຕ່າງກັນຂອງສັນຍານແລະຕົວຢ່າງໃນ VCD file.

ເວລາ

ເມນູຍ່ອຍເວລາມີ superset ຂອງຟັງຊັນທີ່ປະຕິບັດໂດຍ Navigations ແລະປຸ່ມ Status Panel.
ມັນ​ເຮັດ​ໃຫ້​ງ່າຍ​ດາຍ​, ທີ່​ກ່ຽວ​ຂ້ອງ​ກັບ​ເວ​ລາ​, ຫນ້າ​ທີ່​ເຊັ່ນ​ການ​ຊູມ​, ການ​ເຄື່ອນ​ຍ້າຍ​ໄປ​ຈຸດ​ທີ່​ໃຊ້​ເວ​ລາ​ສະ​ເພາະ​ໃດ​ຫນຶ່ງ​, ການ​ປ່ຽນ​ແປງ​ສັນ​ຍານ​ໃນ​ທິດ​ທາງ​ສະ​ເພາະ​ໃດ​ຫນຶ່ງ​, ແລະ​ອື່ນໆ​.

ເຄື່ອງໝາຍ

ເມນູຍ່ອຍເຄື່ອງໝາຍຖືກໃຊ້ເພື່ອປະຕິບັດການຫມູນໃຊ້ຕ່າງໆໃນເຄື່ອງໝາຍເຊັ່ນດຽວກັນກັບການຄວບຄຸມການເລື່ອນອອກນອກໜ້າຈໍ.
ມັນເຮັດໃຫ້ການທໍາງານຂອງການເພີ່ມເຄື່ອງຫມາຍຈໍານວນຫລາຍຢູ່ໃນປ່ອງຢ້ຽມສັນຍານ. ອະນຸຍາດເຄື່ອງໝາຍຊື່ສູງສຸດ 26 ຊື່ ແລະເວລາສຳລັບທຸກຄົນຕ້ອງແຕກຕ່າງກັນ.

a. ເພື່ອເພີ່ມ Markers ໃນປ່ອງຢ້ຽມສັນຍານ
ຄລິກຊ້າຍໃສ່ຈຸດທີ່ຕ້ອງການທີ່ທ່ານຕ້ອງການວາງ Marker ແລະກົດ ALT + N. ນີ້ຈະວາງເຄື່ອງຫມາຍທີ່ມີຊື່ (A, B, C, ແລະອື່ນໆ) ຢູ່ໃນຈຸດທີ່ຕ້ອງການ. ຜູ້ໃຊ້ສາມາດສືບຕໍ່ເຮັດສິ່ງນີ້ສໍາລັບ 26 ສະຖານທີ່ເວລາທີ່ແຕກຕ່າງກັນ.
ເພື່ອປຽບທຽບຄ່າເວລາຢູ່ທຸກບ່ອນຂອງເຄື່ອງໝາຍ, ເມນູ → ເຄື່ອງໝາຍ → ສະແດງຂໍ້ມູນການປ່ຽນແປງເຄື່ອງໝາຍ.
ນີ້ຈະເປີດປ່ອງຢ້ຽມທີ່ມີມູນຄ່າເວລາໃນແຕ່ລະເຄື່ອງຫມາຍ. ຜູ້ໃຊ້ສາມາດບັນທຶກຄ່າເວລາຂອງແຕ່ລະເຄື່ອງໝາຍທີ່ວາງໄວ້ ແລະ ຫັກອອກເພື່ອຄິດໄລ່ຄວາມແຕກຕ່າງຂອງເວລາລະຫວ່າງ 2 ເຄື່ອງໝາຍ.
b. ເພື່ອເອົາ Marker ໃນປ່ອງຢ້ຽມສັນຍານ

ຜູ້ໃຊ້ສາມາດເຂົ້າໄປທີ່ Menu → Markers → Collect Named Marker. ນີ້ຈະເອົາເຄື່ອງຫມາຍຊື່ສຸດທ້າຍທີ່ວາງໄວ້ໃນປ່ອງຢ້ຽມສັນຍານ. ຜູ້​ໃຊ້​ສາ​ມາດ​ເອົາ​ເຄື່ອງ​ຫມາຍ​ທີ່​ມີ​ຊື່​ທັງ​ຫມົດ​ໂດຍ​ການ​ໄປ​ທີ່​ເມ​ນູ → ເຄື່ອງ​ຫມາຍ → ເກັບ​ກໍາ​ຂໍ້​ມູນ​ຊື່​ທັງ​ຫມົດ (ຮູບ 12​)​.
ຕົວເລືອກເມນູ

ໃນຮູບທີ 13, ພວກເຮົາສາມາດເຫັນໄດ້ວ່າສີສັນຍານໄດ້ຖືກປ່ຽນແປງແນວໃດ. ທ່ານ​ສາ​ມາດ​ສັງ​ເກດ​ເຫັນ​ສັນ​ຍານ​ເປົ່າ​ຫວ່າງ​ເພີ່ມ​ເຂົ້າ​ໄປ​ໃນ​ປ່ອງ​ຢ້ຽມ​ສັນ​ຍານ​ເຊັ່ນ​ດຽວ​ກັນ​ກັບ​ຄໍາ​ເຫັນ – Blank Signal​.
ນອກຈາກນີ້ຍັງສັງເກດເຫັນການມີ 6 ເຄື່ອງຫມາຍທີ່ມີຊື່ (A – E) ແລະ compurgation ຂອງມູນຄ່າທີ່ໃຊ້ເວລາລະຫວ່າງເຄື່ອງຫມາຍເຫຼົ່ານີ້ຢູ່ໃນ ps.
ຕົວເລືອກເມນູ

View

ໄດ້ View ເມນູຍ່ອຍຖືກນໍາໃຊ້ເພື່ອຄວບຄຸມຄຸນລັກສະນະຕ່າງໆທີ່ກ່ຽວຂ້ອງກັບການສະແດງກາຟິກຂອງລາຍການສະຖານະພາບເຊັ່ນດຽວກັນກັບຄ່າໃນປ່ອງຢ້ຽມຍ່ອຍຂອງສັນຍານ. ຈາກເມນູນີ້, ທ່ານສາມາດປ່ຽນປ່ອງຢ້ຽມສັນຍານເປັນສີດໍາ & ສີຂາວຫຼືສີເຊັ່ນດຽວກັນ. ໄດ້ View ເມນູຍ່ອຍຍັງຊ່ວຍໃຫ້ທ່ານສາມາດປ່ຽນເວລາ Dimension ຈາກວິນາທີ (ວິນາທີ) ຫາ ficoseconds (fs). ຜູ້ໃຊ້ສາມາດຊອກຫາທາງເລືອກນີ້ View → ຂະຫນາດຕາມເວລາ → fs.

ຊ່ວຍເຫຼືອ

ເມນູຍ່ອຍຊ່ວຍເຫຼືອປະກອບມີທາງເລືອກໃນການເປີດໃຊ້ການຊ່ວຍເຫຼືອອອນໄລນ໌ເຊັ່ນດຽວກັນກັບການສະແດງຂໍ້ມູນສະບັບຂອງໂປຣແກຣມ.

ສະຫຼຸບ

ເອກະສານນີ້ຖືກສ້າງຂື້ນເພື່ອຊ່ວຍຜູ້ໃຊ້ໃນການຈໍາລອງການອອກແບບຢ່າງສໍາເລັດຜົນແລະການກວດສອບການເຮັດວຽກໂດຍການແກ້ໄຂການຮ່າງ testbench ທີ່ຈໍາເປັນແລະນໍາໃຊ້ Icarus Verilog ພ້ອມກັບ GTKWave ເພື່ອສະແດງຮູບຄື້ນແລະສັງເກດຜົນໄດ້ຮັບ.

ປະຫວັດການແກ້ໄຂ

ການທົບທວນ ວັນທີ ລາຍລະອຽດ
1.00 ວັນທີ 20 ພຶດສະພາ 2024 ການປ່ອຍຕົວໃນເບື້ອງຕົ້ນ.

R19US0011EU0100 Rev.1.0
ວັນທີ 20 ພຶດສະພາ 2024
© 2024 Renesas Electronics
ໂລໂກ້

ເອກະສານ / ຊັບພະຍາກອນ

ການຈຳລອງຊອບແວ RENESAS ForgeFPGA [pdf] ຄູ່ມືຜູ້ໃຊ້
REN_r19us0011eu0100, ການຈຳລອງຊອບແວ ForgeFPGA, ຊອບແວ ForgeFPGA, ForgeFPGA, ການຈຳລອງ ForgeFPGA, ການຈຳລອງຊອບແວ, ການຈຳລອງ, ຊອບແວ

ເອກະສານອ້າງອີງ

ອອກຄໍາເຫັນ

ທີ່ຢູ່ອີເມວຂອງເຈົ້າຈະບໍ່ຖືກເຜີຍແຜ່. ຊ່ອງຂໍ້ມູນທີ່ຕ້ອງການຖືກໝາຍໄວ້ *