自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 SGDC---CDC

shell下的Sg_shell:比如写了一个sdc/sgdc是否有效,如下图将sdc里面的一句话cp过来,这句话的意思是使用的工具是DC才可以,但是我们这里没有使用DC,所以输入之后没有打印任何东西。所以可以在sg_shell中检查sdc写的是否正确,不用每改一个标点符号都重新跑一遍spg flow.在spyglass中跑CDC时,建议按照严重性分,也可以按照module分。当有了waiver文件,waiver tree就会显示waiver的信息。3.设置sync cell。

2024-06-12 16:58:07 136

原创 SGDC---dft_lint

SpyGlass Design Constraints是在利用SpyGlass跑LINT/CDC时的设计约束文件。3.CRG中插了occ buf的Z端都要设置成test_clock (否则会报时钟不受控制)4. 给CRG中所有的dff设置no scan(不上chain)2.指定scan_clk 和scan_mode。6. 所有reset都要受scan控制。1. 指定current_disgn。5.测试的东西可以设置no_scan。

2024-06-04 16:15:56 253

原创 UMA和NUMA

NUMA和UMA

2024-06-03 09:39:51 116

原创 牛客刷题总结——跨时钟域处理

因为慢时钟域采快时钟域的信号可能采不到,所以需要将快时钟域的信号进行脉冲展宽之后再用慢时钟域的时钟采样。在做SoC设计中,免不了包含异步时钟,那就需要进行正确的跨时钟域处理来保证数据在不同时钟域传输不出错。便得到时钟域clk_b下的脉冲信号pulse_b,采用三级寄存器进行边沿检测,可以防止亚稳态传播。pulse_a转化为电平信号pulse_inv,然后在时钟域clk_b下对该电平信号进行。我们在使用这个模块时,无论对于快时钟域到慢时钟域还是慢时钟域到快时钟域,原理:将时钟域clk_a下的单。

2024-04-16 16:33:48 381

原创 牛客刷题——串并转换

输入端输入单bit数据,每当本模块接收到6个输入数据后,输出端输出拼接后的6bit数据。数据拼接时先接收到的数据放到data_b的低位。1.串转并(串转并就是把1位的输入放到N位reg的最低位,然后N位reg左移一位,在把1位输入放到左移后的reg的最低位,这样循环,就可以得到,以最高位开始传输,最低位传输完成的N位数据了)valid_a用来指示数据输入data_a的有效性,valid_b用来指示数据输出data_b的有效性;2.并转串(把并行的N位数据的最高位给1位输出,然后类似的循环左移)

2024-04-16 16:33:35 270

原创 牛客刷题——使用握手信号实现跨时钟域数据传输

分别编写一个数据发送模块和一个数据接收模块,模块的时钟信号分别为clk_a,clk_b。两个时钟的频率不相同。数据发送模块循环发送0-7,在每个数据传输完成之后,间隔5个时钟,发送下一个数据。请在两个模块之间添加必要的握手信号,保证数据传输不丢失。

2024-04-16 14:08:55 333

原创 牛客刷题 day2

请编写一个子模块,将输入两个8bit位宽的变量data_a,data_b,并输出data_a,data_b之中较小的数。在数字芯片设计中,通常把完成特定功能且相对独立的代码编写成子模块,在需要的时候再在主模块中例化使用,以提高代码的可复用性和设计的层次性,方便后续的修改。这里很多习惯于软件思维的人写代码会只例化2次子模块,是将a,b比较之后的结果min_ab与c进行比较,进而得到min_abc。现在输入了一个压缩的16位数据,其实际上包含了四个数据[3:0][7:4][11:8][15:12],

2024-04-08 20:02:51 302

原创 牛客刷题1——verilog

输入在6的时候很特殊,只持续了一个时钟周期,但是out 给6乘1、3、7、8需要四个时钟周期,说明不能利用d的实时变化去算out的实时变化,所以在第一个input_grant的时候把d寄存起来。end包含,即使只有一句。5. 在数字芯片设计中,经常把实现特定功能的模块编写成函数,在需要的时候再在主模块中调用,以提高代码的复用性和提高设计的层次,分别后续的修改。4. 已知d为一个8位数,请在每个时钟周期分别输出该数乘1/3/7/8,并输出一个信号通知此时刻输入的d有效(d给出的信号的上升沿表示写入有效)

2024-04-08 15:53:15 484

原创 System Verilog —— 数据类型

相比于Verilog将寄存器(register)类型reg和线网(net)类型例如wire区分地如此清楚,在SV中新引入了一个数据类型logic。但是,verilog在给每bit都赋1时,就不能直接写’b1了,这样编译器会将前63位补零,必须得写成16个F (1111)。(2)SV作为侧重于验证的语言,只会作为单纯的变量进行赋值操作,而这些变量也只属于软件环境构建。(1)Verilog作为硬件描述语言,要考虑变量是寄存器,还是线网类型。四值变量的默认初始值为X,二值变量的默认初始值为0。

2023-12-18 14:22:52 392 2

原创 STA静态时序分析——配置STA环境

edge指的是DCLK的每一个边沿(既包括posedge,也包括negedge),从1开始,每遇到一个边沿,增加1因为通过这三个边沿我们就可以确定generated clock的high duration和low duration。在-edge_shift {}中,三个参数指的是下图下面那排,也就是时间。CLKDIV2的posedge在DCLK的第2个边沿,negedge在DCLK的第4个边沿,下一个posedge在DCLK的第6个边沿。

2023-12-18 14:22:39 1608 1

原创 VC SPYGLASS——RDC Verification

所有复位信号都是从异步复位同步释放电路处理过的,复位释放导致的亚稳态不存在, 主要是reset assertion时刻带来的亚稳态。每个模块的复位信号不一样,信号在跨异步复位域传输就会出现亚稳态的问题。2. 没有声明的soft reset(由reset控制,由dff q输出,经过组合逻辑,输入给其他dff作为reset),建议soft reset 显示定义出来。默认情况下,D-Q的reset传递是disable的,要设置才可以接收到原来的rst的,不设的话是没有reset传递的。

2023-12-18 14:21:35 1124

原创 systemverilog声明的位置

SV通过几种方式扩展了Verilog的声明空间。

2023-01-18 15:55:07 270

原创 SystemVerilog学习1——interface

system verilog interface

2022-12-22 17:40:02 2452

原创 verilog手撕代码——找出高位或低位第一个出现1

找出高位或者低位第一个1

2022-12-20 14:25:53 1828

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除