Bạn đang xem trang 1 / 1 trang
Verification professor
Đã gửi: Năm T11 06, 2008 1:37 pm
Viết bởi langtu
Tui la dan thiet ke IC, dang lam trong team Verification. Mong la topic nay giup duoc cac ban va giup duoc chinh ban than tui??
Bat dau ne: cau truc cua mot testbench bang verilog la???START
Re:Verification professor
Đã gửi: Năm T11 06, 2008 3:52 pm
Viết bởi Tuan
・テストベンチとは、自分が作成した回路(module)に、シミュレーション上で信号を
印加/観察するためのデータ構造を指します。
Verilog-HDLではテストベンチもmodule構造を持っています。以下にテストベンチの
構成を示します。module myrtlが観測対象の回路という想定です。
・Fig.1のように、テストベンチのmoduleは外部のポートを持っていません。信号を印
加するためのregと、出力観測用のwireのみです。
・「わかりやすさ」の点から考えれば、テストベンチmoduleのreg, wire名は、観測moduleの入出力ポート名と同じにすることがほとんどです。
reg 信号 <===> 入力ポート
wire信号 <===> 出力ポート
Re:Verification professor
Đã gửi: Ba T11 18, 2008 1:41 pm
Viết bởi langtu
cac ban xem thu doan code nay nha:
`timescale 1ns / 1ps
module tb_chip_basic;
parameter t = 10;
parameter CLKHI = t/2;
parameter CLKLO = t/2;
parameter wdtclkH = (25*CLKLO);
parameter wdtclkL = (25*CLKLO);
parameter t0clkH = (12.5*CLKLO);
parameter t0clkL = (12.5*CLKLO);
parameter t1clkH = (12.5*CLKLO);
parameter t1clkL = (12.5*CLKLO);
// *** Basic Interface to the SigmaK3_CPU
reg clk;
reg por;
reg mclr;
reg clkwdt;
reg t0cki;
reg t1cki;
reg extint;
reg wdte;
wire sleep;
// Declare I/O Port connections
//reg [7:0] porta;
tri [7:0] porta;
tri [7:0] portb;
tri [7:0] portc;
tri [7:0] portd;
// Declare RAM signals
//wire [7:0] ramdatai;
//wire [7:0] ramdatao;
//wire [8:0] rdaddr;
//wire [8:0] wraddr;
//wire ramwe;
// Declare ROM signals
wire [13:0] prgdata;
wire [15:0] prgaddr;
// Peripheral
//------CCP1-----
reg ccp1i;
wire ccp1o;
//------USART-----
reg rxdti;
reg rxcki;
wire txdto;
wire txcko;
// Debug output ports on the chip. These are just internal signals brought out so
// they can be observed.
//
vn08chip_gez vn08chip_gez
(
.clk_i(clk),
.clkwdt_i(clkwdt),
.por_i(por),
.mclr_i(mclr),
.prgdata_i(prgdata),
.extint_i(extint),
.t0cki_i(t0cki),
.t1cki_i(t1cki),
.ccp1i_i(ccp1i),
.rxdti_i(rxdti),
.rxcki_i(rxcki),
.wdte_i(wdte),
.prgaddr_o(prgaddr),
.sleep_o(sleep),
.ccp1o_o(ccp1o),
.txdto_o(txdto),
.txcko_o(txcko),
.porta(porta),
.portb(portb),
.portc(portc),
.portd(portd)
);
// Instantiate the program memory.
rom64k rom64k(
.prg_addr(prgaddr),
.prg_data(prgdata)
);
// Instantiate the RAM512
// This is the only initial block in the test module and this is where
// you select what test you want to do.
initial begin
$display ("************* VN8_01 ***************************");
basic;
end
//initial begin
//$sdf_annotate ("sigmak3.mapped.sdf", sigmak3);
//end
// Event should be emitted by any task to kill simulation. Tasks should
// use this to close files, etc.
//
event ENDSIM;
// Capture some data
task capture_data;
begin
$vcdplusfile("tb_chip_basic.vpd");
$dumpvars (0, tb_chip_basic);
$vcdpluson;
$vcdplusdeltacycleon;
@(ENDSIM);
$dumpflush;
end
endtask
//-------------------------
task reset_por;
begin
por = 0;
# (5*CLKLO) por = 1;
$display ("End RESET_POR.");
end
endtask
//=================================
//Reset master clear
task reset_pic;
begin
mclr = 1;
#(5*CLKLO) mclr = 0;
#(5*CLKLO) mclr = 1;
$display ("End RESET_MCLR.");
//#(700*CLKLO) mclr = 0;
//#(20*CLKLO) mclr = 1;
//#(94000*CLKLO) mclr = 0;
//#(6*CLKLO) mclr = 1;
end
endtask
// Drive the clock input
task drive_clock;
begin
clk = 0;
forever
begin
#(CLKLO) clk = ~clk;
end
end
endtask
//--------------------------------
task drive_t0cki;
begin
t0cki = 0;
forever
begin
#(t0clkL) t0cki = ~t0cki;
end
end
endtask
//--------------------------------
task drive_t1cki;
begin
t1cki = 0;
forever
begin
#(t1clkH) t1cki = ~t1cki;
end
end
endtask
//------------------------------
task drive_wdtclk;
begin
clkwdt = 0;
forever
begin
#(wdtclkH) clkwdt = ~clkwdt;
end
end
endtask
//------------------------------
task drive_wdte;
begin
wdte = 0;
//#(10*CLKHI)
//wdte = 1;
end
endtask
//------------------------------
task drive_extint;
begin
extint = 0;
end
endtask
//------------------------------
//task basic_drive_portain;
//begin
//forever begin
assign porta = 8'h55;
//repeat (64) @(posedge clk);
//portai = 8'hAA;
//repeat (64) @(posedge clk);
//end
//end
//endtask
/*
//------------------------------
continue...
Mong la de tai nay duoc cac ban quan tam