在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 2623|回复: 1

[求助] about verilogA sram model

[复制链接]
发表于 2018-6-14 09:28:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
from internet
这能使用在 HSPICE 吗  ?

==


`define DATA_BITS  8
`define ADDR_BITS 8

// module ram_va(READ_NWRITE, ADDR, CE, DATA, REF, Qb);
module ram_va( Q, CLK , CEB ,READ_NWRITE, ADDR, DATA);

     input READ_NWRITE, CEB, CLK;
     input      [`ADDR_BITS-1:0] ADDR;
     input      [`DATA_BITS-1:0] DATA;
     output      [`DATA_BITS-1:0] Q;
     
     electrical READ_NWRITE, CEB;
     electrical [`ADDR_BITS-1:0] ADDR;
     electrical [`DATA_BITS-1:0] DATA;
     electrical [`DATA_BITS-1:0] Q;
     //electrical REF;

     parameter integer MEM = (pow(2,`ADDR_BITS)*`DATA_BITS);
     parameter real vth = 0.9;
     parameter real dig_v = 1.8;

     integer addr_aux;
     integer ce_aux, r_nw_aux;
     integer data_aux_in[`DATA_BITS-1:0]; //it's the value read from the input port DATA
     integer data_aux_out[`DATA_BITS-1:0]; //it's the value assigned to the output port Q
     integer k, bit, i, m;
     integer memory[MEM-1:0];
     
     analog begin
           ce_aux = 0;
           r_nw_aux = 0;
           addr_aux = 0;
           bit = 0;
           generate i(`DATA_BITS-1, 0) data_aux_in = ((V(DATA) > vth)      ? 1: 0); // data_aux_in = DATA
           
           generate i(`ADDR_BITS-1, 0) addr_aux = addr_aux +((V(ADDR) > vth)      ? 1 << i:0); // addr_aux = ADDR
           
           r_nw_aux = (V(READ_NWRITE) > vth) ? 1:0; // r_nw_aux = READ_NWRITE
                       
           ce_aux = (V(CEB) < vth)      ? 1:0; // ce_aux = CE
           
           for (k=addr_aux*`DATA_BITS;k<=(((addr_aux+1)*`DATA_BITS)-1);k=k+1) begin
                 if ((r_nw_aux==1)&&(ce_aux==1)) begin
                       data_aux_out[bit] = memory[k];
                       bit = bit+1;
                 end else if ((r_nw_aux==0)&&(ce_aux==1)) begin
                       memory[k]= data_aux_in[bit];
                       data_aux_out[bit] = 0.1n;
                       bit = bit+1;
                 end else begin
                       data_aux_out[bit] = 0.1n;
                       bit = bit+1;
                 end
           end
           
           generate i(`DATA_BITS-1, 0) V(Q) <+ data_aux_out *  dig_v;
     end
endmodule
发表于 2024-7-16 14:52:03 | 显示全部楼层
帮顶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-15 07:18 , Processed in 0.012597 second(s), 3 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表