- 博客(55)
- 收藏
- 关注
原创 远程连接电脑以及服务器
自己有两台电脑又不想对着两台屏幕操作,远程控制是不错的选择,还有如果需要在服务器运行大的项目,也可以通过下面的方法进行连接服务器,目前远程控制一是用第三方软件,比如向日葵,下面介绍一种利用windows自带远程连接工具实现远程控制。通过向日葵连接;国产向日葵下载链接支持一个用户账号绑定多台主机,还是国产的,推荐使用。通过VNC工具建立连接VNC下载连接用于连接远程linux服务器使用较多,需要输入远程服务器地址以及用户名,密码。通过系统自带工具建立远程连接设备 这里的两台都设置用户密码的主
2019-11-30 15:17:17
3625
原创 virtual_clock
虚拟时钟(Virtual Clock)是数字设计中用于时序分析的虚拟概念,与实际时钟不同,它不连接任何物理引脚。虚拟时钟通过create_clock命令创建,但不指定时钟源。其核心作用是在CTS(时钟树综合)前后保持时序分析的一致性:当实际时钟具有传播延迟时,虚拟时钟可避免因外部假想寄存器无延迟导致的"假违例"。通过为输入/输出设置虚拟时钟约束(如set_input_delay/set_output_delay),EDA工具能更准确地评估时序,提高分析效率。虚拟时钟特别有助于解决IO路径
2025-11-10 11:15:55
958
原创 set_clock_uncertainty
摘要:set_clock_uncertainty命令用于定义时钟时序不确定度,该约束用于建模时钟抖动、制造偏差等影响时序的因素。命令语法支持针对不同时钟边沿和检查类型(setup/hold)的设置,其中保持时间检查不受时钟抖动影响。不确定度可应用于时钟、端口或引脚对象,并遵循优先级覆盖规则。当应用于组合逻辑引脚时,会隐式设置size_only属性。示例展示了不同场景下的应用方法,并说明时钟不确定度会反映在时序报告中,主要影响捕获时钟路径。在设计不同阶段,uncertainty的组成要素也有所不同,时钟树综合
2025-11-10 10:48:28
1240
转载 Grep 正则 和扩展正则表达式区别
作用:文本过滤器,用于文本搜索,用指定“模式”逐行匹配。模式:由正则表达式字符及文本字符所编写的过滤条件正则表达式:由一类特殊字符和文本字符所编写的模式,其有些字符不表示字符字面意义,而表示控制或通配的功能比较记忆:基本正则表达式:BRE 扩展正则表达式:ERE grep -E = egrep。
2025-09-23 15:35:35
87
原创 AHB 细节理解
问题1: 因为AHB的流水线特性,所以一次传输的ADDR阶段和DATA阶段是先后进行的,如果出现连续访问两个Slave的情况,前一次传输的DATA阶段应该和后一次传输的ADDR阶段重合。如果MUX是纯组合逻辑的,则会出现传输失败的情况,如下图所示,此时Data(A)无法通过MUX传回Master了,因为此时Master发出的地址已经改变,HSEL信号已经选中slave2,此时HRDATA1是无法传送到master,该问题还会存在Slave和Master之间的HRESP信号和HRAEDY信号。
2025-08-21 17:49:37
1092
转载 SPI 单主从总线
SPI(Serial Peripheral interface,串行外围设备接口),是一种高速的,全双工,同步通信总线。SPI采用主从控制模式(Master--Slave)架构,一般有1个主设备、一个或多个从设备,使得主设备可以与多个从设备之间实现片间通信。SPI在芯片管脚中只占用四根线节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便。主要应用在 EEPROM,FLASH,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。
2025-08-20 15:38:14
258
原创 理解UVM中的virtual sequencer和virtual sequence
当我们使用宏`uvm_do或者xxx_seq.start(sqr)方法启动sequence后,sequence内部自有的m_sequencer句柄就自动地指向了对应的sequencer上了。实际上,m_set_p_sequencer()函数也是在sequence的start()函数内部被调用的(所以这个函数是virtual的)。的代码中,我们在virtual sequence中,通过p_sequencer索引到多个实际的sequencer句柄,并将他们传递给实际的sequence。
2025-08-20 15:07:05
1005
原创 IIC 总线
I²C总线是一种双线(SDA、SCL)半双工串行通信协议,支持多主从设备通信,通过唯一地址识别设备。其特点包括:采用"线与"结构实现时钟同步和仲裁机制;标准模式速率100kb/s,快速模式400kb/s;传输包含7位地址+1位方向位的数据帧。仲裁机制通过比较总线实际电平与发送电平来实现,地址小的设备优先级高。时钟同步由从设备拉低SCL实现速度调节。I²C相比SPI具有更灵活的协议层,支持动态主机切换,但传输距离较短。
2025-08-20 14:55:10
692
原创 DC读取设计文件
read_verilog只能读取verilog文件,对于HDL以及system verilog文件分别使用read_hdl、read_sverilog命令。analyze会检查设计文件的语法以及可综合性,默认情况下他会将读取设计文件后产生的二进制中间文件存储在“analyzed”目录,当然工具也允许用户通过。此外这种方法支持综合阶段 ”调整设计文件中的parameter",这是read_xxx方法不支持的。它们之间的使用方法有一些区别。Analyze 和 elaborate。DC工具可以直接通过。
2025-08-13 11:18:20
392
原创 Spyglass CDC rule
如上图所示工具报告jtag_dr0与ICK_TCK ICK_BS发生汇聚,但由于汇聚发生在clock_mux中,做了glitchfree处理,因此可以直接waive了。clock_info05b 报告clock在组合逻辑单元而不是mux单元汇聚,通过设置set_case_analysis解决。clock_glitch03 会报告一个异步信号与一个clock信号汇聚,导致存在潜在的clock glitch风险。Ac_glitch03 不同信号的路径延迟导致destination 端存在glitch。
2025-08-12 16:20:40
548
原创 Spyglass CDC basic concept
摘要:本文介绍了Spyglass工具中Waive功能和时钟传播的相关参数设置。Waive功能支持通过通配符和正则表达式屏蔽无风险违规,其中通配符"*"和"?"分别匹配任意长度和单个字符,正则模式包含11种元字符。时钟传播方面,参数clock_reduce_pessimism控制时钟推断,enable_generated_clocks影响派生时钟传播,stop_derived_at_random_logic决定时序单元输出的时钟推断。特别地,当时序单元输出连接多个DFF
2025-08-01 14:15:38
870
原创 Bottom-Up timing constraints Integration
本文提出了一种分层SDC约束方法,以简化复杂设计中不同层级的时序约束管理。通过分而治之策略:子模块设计者专注于内部时钟逻辑约束,使用变量前缀提高可重用性;顶层设计者只需集成子模块约束,无需关注内部细节。
2025-07-30 10:28:00
387
原创 Spyglass CDC flow
如果需要工具能够是被generated_clock约束,需要设置参数enable_generated_clocks,use_inferred_clocks 为yes,在goal运行结束后会产生generated_clocks.sgdc, cdc_setup_generated_clocks.sgdc。主要包括Ac_unsync01, Ac_unsync02两种未同步issue,如果clock reset设置的不完善,会导致出现错误的Ac_unsync 问题,如下所示。
2025-07-17 15:48:38
1102
原创 Create_generated_clock ·
摘要:生成时钟(generated_clock)用于精确建模分频和派生时钟,为时序分析工具提供参考。通过create_generated_clock命令定义时,需明确源时钟(master_clock)及其相位关系。关键参数包括-source(自动识别主时钟)和-master(直接指定主时钟),并需注意组合逻辑路径需使用-combinational选项。生成时钟的延迟计算分为CTS前后的ideal和propagated模式,其中MCNL为主时钟定义点到生成时钟定义点的延迟。特别强调,使用-combinatio
2025-07-17 10:45:38
1416
2
原创 PCIE Link Equalizaton
link均衡是用于通过调整tx rx的参数来提高信号质量, 所有有LTSSM关联的lane都需要进行均衡操作。均衡只有在低速率的均衡完成之后才可以进行后续高速度的均衡,虽然协议规定可以重复做均衡,但是还是不建议进行同意速率的重复多次均衡,链路两端的组件必须存储TX的参数并在后续更高的速度等级上使用它,同时组件也允许进行Receivr的细调(只要它不会导致link的稳定性,不会导致LTSSM进入Recovery)。2. 均衡均衡可以通过自动机制 或者 软件机制完成,
2025-04-16 22:55:57
904
原创 Spyglass flow
设置 SPYGLASS_HOME环境变量,保证运行时候工具可以找到可执行文件。如何启动Spyglass Explorerspyglgass。
2025-03-03 13:55:55
331
原创 仿真器的调度机制
DUT 也是非阻塞赋值,则按照先执行设计平台,验证平台的的优先级顺序,DUT执行非阻塞赋值时,test2还未将new 值更新过来因此会保持为0,随后执行验证平台的非阻塞赋值"a=1;,你是希望打印的rdata是data_reday后的值还是data_reday之前的值呢,如果按照verilog的调度机制则 打印的是data_reday之前的值0。b=1", 随后优先级判定执行非阻塞赋值,此时在clk 上升沿判断 " if (a&b) " 此时非阻塞赋值的结果计算为1,此时pready便立刻为1。
2024-12-11 17:44:56
772
原创 Design compiler
Multimode 和 UPF mode不是tool mode,Multimod是能够允许通过工具再多种工作条件下工作,比如测试模式和standby模式;DC NXT 和 DC GUI可以同时分析优化这种设计, 它们提供的multicorner-multimode功能提高了DC 和 IC compiler之间的兼容性。去综合你的代码,它提供了对面积、功耗、以及性能的同时优化算法,同时它还可以实现高级延迟和数学运算优化,自动漏电流优化,寄存器retimng (推荐)compile_ultra 会启动。
2024-12-02 11:40:34
1224
原创 UVM 组件
sequencer 会有一个seq_item_export 将数据发送出去,driver通过seq_item_port接收数据,只需要在上层组件中将这两个组件通过。river.seq_item.port.connect(sqr.seq_item_export)连接在一起即可。前面我们知道sequence产生激励,sequencer负责调度激励的顺序,最终通过driver发送到DUT。此时driver的main_phase在通过一个forever循环不停地获取激励。
2024-11-29 14:55:45
638
原创 UVM 的sequencer and sequencer
UVM中使用SEQ(sequence)生产Transaction激励, 通过SEQER(sequence)发送给DRV(driver).但是SEQ时独立于UVM验证环境之间的组件只作为objecr存在,最终需要在SEQER上实现启动激励发送。
2024-11-29 13:46:50
808
原创 IC脚本之perl
Perl 是一种功能丰富的计算机程序语言,运行在超过100种计算机平台上。IC flow 的 流传的古老版本大多是也是使用这种语言,这里会对Perl的常用知识点进行总结。
2024-11-19 14:43:33
822
原创 IC 脚本之 Tcl
TCL是tool command language , 在综合,DFT , PR阶段工具的命令语言,这里简单介绍下语法基础。
2024-11-15 15:20:14
570
原创 IC 之 Makefile
是用于管理项目构建过程的工具,广泛用于 C/C++ 等语言的编译。它通过定义规则和指令,自动化编译、链接等步骤,大大简化了开发者的工作。下面将详细介绍 Makefile 的基本概念、语法规则以及一些高级用法。
2024-11-15 11:36:22
620
原创 IC 脚本之python
在linux 通常使用library Offic来访问.xls,.xlsx, 有时候需要将它们转换为.csv文件,这时可以通过library office自带的命令将其转为特定格式的文件。re模块主要功能是通过正则表达式来匹配处理字符串的, re跟vim正则匹配知识点类似,只不过元字符以及次数控制符不在需要 ”\"来进行控制。对于较旧版本的.xls文件,xlrd和xlwt库提供了读取和写入的功能。虽然它们不支持.xlsx格式的文件,但对于需要处理遗留数据的情况非常有用。
2024-11-13 17:10:16
545
原创 set_dont_touch_network 和set_ideal_network
是不进行DRC规则检查。对于set_dont_touch_network命令设置了dont_touch 属性的对象,工具虽然也不会插入buffer但是还是会进行DRC规则检查,如果fanin fanout 违反规则,工具还是会给出警告。总的来说set_ideal_network 命令会将作用的电路指定为。
2024-11-08 15:58:06
1214
原创 Verilog timescale
timescale timeunit / timeprcison, 在module内部定义的时间单位如果是整数则按照timeunit进行转换,如果包含小数则根据timeprecison四舍五入转换最终的结果。0对应1s,-1则对应100ms,````以此类推,-15则对应1fs,可以看到这个对应关系基本上就是时间单位换算关系,非常好记。一般多使用-9即ns的打印方法。suffix_string: 用于指示后打印一个用户自定义字符串,一般是与unit_number相关的ns,ps。
2024-05-11 16:10:39
1190
原创 VCS 编译仿真
value$plusargs("cmd_arg=%s", case_name")用于将命令行中cmd_arg= xxx,的xxx复制给case_name变量。$test$plusargs("cmd_arg") 用于判断命令行是否定义了cmd_arg的参数;在仿真阶段,使用 编译得到的可执行文件 + plusargs便可以执行不同的选项。
2024-04-25 16:39:24
1458
原创 PCIE Scrambler
扰码多项式:G(X)=X16+X5+X4+X3+1用于扰码的LFSR如下图所示:Data Link 层 用于配置PL 物理层使能扰码功能的接口以及机制是通过一种特殊的方法实现,协议规范未明确具体实现方案。
2024-03-14 15:34:54
1969
原创 linux 环境变量
shell是一个命令行解释器,那么用户想要以方式与Linux内核交互,就可以采用不同的shell。shell有不同的版本,常见的有:sh,,ksh。其中Bash 是大多数Linux 系统默认的 Shell。环境变量是一种特殊的变量,以便 shell 中运行的程序或脚本能够轻松访问到这些数据。这也是存储持久数据的一种简便方法。
2024-03-08 18:17:56
643
原创 PCIE 4.0 Power Mangement
当系统希望移除power和clk之前,会发送PME_Turn_Off_Message,设备接收到PME_Turn_Off_Message后返回的PME_TO_AckMessage表示本地已经准备好移除power。在经过常规复位之后组件的所有Function均会进入D0_uninitialized 状态,在经历过过configuration后便会进入D0_active状态,它是PCIE设备的全工作状态。,系统软件无法控制L0 和L0s状态间的迁移过程,这两个状态的迁移只能由ASPM控制。
2024-03-01 15:36:31
2170
原创 PCIE 4.0 L0s/L1/L2
L0是PCIE设备正常工作的状态,当设备链路处于非工作状态可以跳转大相应的低功耗状态,L0s是一种可以快速恢复到L0的低功耗状态;L1必须经过Reovery状态才可以恢复到L0状态;L2需要从Detect开始逐步进入到L0状态。它们的恢复时间依次延长,与此对应便是降低功耗的等级越来越高。
2024-03-01 15:06:52
5032
原创 PCIE Retimer
retimer是一种PCIE的扩展设备,用于长距离高效地传输数据,起到一种中继器的作用。在EP和RC中间最多允许两级retimers级联,其可以分为纯模拟类,它是一种对物理层协议无关的芯片;另一种便是与物理层交互的芯片。下文介绍的便是这种参与物理成交互的retimer,它可以进行。
2024-03-01 14:16:18
5350
1
原创 PCIE Order Set
Training Sequence是由Order Set(OS) 组成,它们主要是用于bit aligment,symbol aligment,交换物理层的参数。当data_rate = 2.5GT or 5GT 它们不会被扰码(scramble),当date_rate = 8GT or higher 根据特殊的规则决定是否对Order Set 进行扰码。 LTSSM中使用最多的训练序列为TS1 TS2,它们一般都是连续进行发送,只可以被SKP**以及 **EIOS(2.5GT除外,因为其不支
2024-03-01 13:57:32
2482
原创 VCS 覆盖率收集
随着设计越来越复杂,采用受约束的随机测试方法对它们进行全面验证,它利用随机化产生一套定向测试向量集。此时就需要使用来衡量测试进行的程度。1.1 功能覆盖率衡量设计的是实现情况,工具自动帮你完成覆盖率的收集,这部分的数据的收集可以通过VCS功能设置一些选项完成。首要的选择式使用来运行现有的测试程序,其次是。只有在确实需要的时候才会创建。1.2 断言覆盖率断言是用于一次性或在一段时间对一个或多个设计信号在逻辑或者时序上的声明代码。
2024-02-29 18:10:27
3046
原创 system verilog的仿真error 记录
reason: env.sv解析时候发现需要monitor这个class,但由于在vcs吃的filelist中它位于env.sv 下,还未对其进行解析导致无法识别到monitor class。这里的monitor可以是其他·自定义的模块。solution: 出现这种错误有时候不在xxx所在的文件,可能还需要检查filelist中xxx所在文件的上一个文件。solution: 调整filelist中的文件顺序。
2024-02-29 17:13:25
1814
原创 PCIE 4.0 Equalizaiton(LTSSM 均衡流程)
再PCIE4.0版本之后,规范针对RC(downstream port) 以及EP (upstreamport)的phase分别进行了说明。
2024-01-26 10:44:08
4487
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅