|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
时序仿真结果
`timescale 1ns / 1ps
module multi(clk,a_in,reset,yout);
parameter WIDTH=2;
input[WIDTH-1:0] a_in;
input clk;
input reset; //高脉冲复位
output[WIDTH-1:0] yout;
reg[WIDTH-1:0] yout;
always@(posedge clk or posedge reset)
begin
if(reset)
yout<=2'd0;
else
yout<=a_in;//将输入直接输出,这就是个时序仿真实验程序,没有具体的意思
end
endmodule
对这个简单的模块进行时序仿真, 工作频率设置为100Mhz,没有加时序和引脚约束,输出结果为:输入保持110ns才有正确的输出。为什么输入要保持这么久才会有正确的输出 ?
testbench如下:
`timescale 1ns / 1ps
module tb_multi_v;
parameter HALF_CLK=5,
WIDTH=2;
// Inputs
reg [WIDTH-1:0] a_in;
reg clk;
reg reset;
// Outputs
wire [WIDTH-1:0] yout;
//creat clk
initial begin
clk=1'b0;
forever
#HALF_CLK clk=~clk;
end
initial begin
// Initialize Inputs
reset=1'b1;
#10;
reset=1'b0;
a_in = 2'b11;
#120 $stop;
end
multi multi (
.a_in(a_in),
.clk(clk),
.reset(reset),
.yout(yout)
);
endmodule |
|