Linux 运行vcs仿真命令,VCS使用以及命令行调试

最近在学习VCS,现将VCS的一些使用心得记录下来。

VCS是synopsys的仿真verilog的仿真器。基于linux系统。有命令行模式和图形化模式。图形化模式是用的dve。

以串口verilog代码使用为例,进行VCS使用说明。

简要说明下该串口功能。该串口工作在波特率为115200,无奇偶检验位。一位停止位。当使能信号有效,就将8位数据发送出去,输出结束后,在将该数据读回来。即自发自收。

测试代码如下:

module ceshi_uart_test;

// Inputs

reg clk;

reg rst_n;

reg [7:0] in_data;

reg w_en;

// Outputs

wire [7:0] data;

wire tx_free;

wire rx_free;

// Instantiate the Unit Under Test (UUT)

ceshi_uart uut (

.clk(clk),

.rst_n(rst_n),

.in_data(in_data),

.w_en(w_en),

.data(data),

.tx_free(tx_free),

.rx_free(rx_free)

);

always #1 clk = ~clk;

initial begin

// Initialize Inputs

clk = 0;

rst_n = 0;

in_data = 8'h53;

w_en = 0;

// Wait 100 ns for global reset to finish

#100 rst_n = 1;

#50  w_en = 1;

#5   w_en = 0;

@(tx_free)

#50  w_en = 1;

#5   w_en = 0;

#100  $finish;

end

endmodule

顶层模块代码:

module ceshi_uart(

input clk,

input rst_n,

input [7:0] in_data,

input w_en,

output [7:0] data,

output tx_free,

output rx_free

);

wire  band_tick;

wire  [1:0] rx_state;

wire  [1:0] tx_state;

wire        txd_data;

bandrate_generate     //波特率产生模块。产生波特率时钟的16倍时钟

#(

.bandrate(19200)    //波特率

)bandrate_generate_1

(

.clk(clk),

.rst_n(rst_n),

.state(rx_state|tx_state),

.band_tick(band_tick)

);

uart_rx uart_rx_1 (     //接收模块

.clk(clk),

.rst_n(rst_n),

.rxd_data(txd_data),

.band_tick(band_tick),

.free(rx_free),

.data(data),

.rx_state(rx_state)

);

uart_tx uart_tx_1(    //发送模块

.clk(clk),

.rst_n(rst_n),

.w_en(w_en),

.band_tick(band_tick),

.send_data(in_data),

.free(tx_free),

.txd_data(txd_data),

.tx_state(tx_state)

);

endmodule

波特率产生模块

module bandrate_generate

#(

parameter bandrate = 9600

)

(

input clk,

input rst_n,

input [1:0] state,

output band_tick

);

//此处initial语句是可以综合的,因为是预先计算的。

/************* initial the bandrate    *******************/

reg[9:0] bandrate_number ;

initial  begin

case( bandrate )

4800:

bandrate_number = 650;

9600:

bandrate_number = 325;

14400:

bandrate_number = 216;

19200:

bandrate_number = 162;

38400:

bandrate_number = 80;

56

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值