在SoC等芯片设计中,常常会设置多种时钟工作模式,例如正常模式和低功耗模式等,因此在芯片运行过程中常会进行时钟切换,本文使用的方法适合多个时钟源,只是在此只展现了两种时钟源,如下。...如果直接使用简单粗暴的代码进行时钟切换: assign outclock = select?...SELECT中插入一个通过下降沿触发的D触发器,因此可以保证时钟切换时不会出现毛刺,因为此时select的电平变化不会引起输出信号outclock的变化,只有当此时钟源完成一个下降沿,完全被取消以后,输出信号才会和下一个时钟源是一致的...代码如下所示: 从上图中第二个箭头开始,实际发生时钟切换。...,即异步时钟源 在第一种方法的基础上,在选择路径上再插入一个上升沿触发D触发器,这是对异步信号进行同步处理,这样即使是两个异步的时钟源进行切换,也可以避免亚稳态的产生。
在SystemVerilog中有许多方法可以对测试台进行建模,测试台中的代码可以是简单的编程语句,也可以是复杂的面向对象、事务级编程,示例1-5说明了32位加法器/减法器设计的简单testbench。...该设计在其时钟输入的上升沿工作。测试台使用同一时钟的相对边缘,以避免在设计使用的时钟边缘上驱动输入和读取设计的输出。如果测试台在时钟的下降沿驱动值,则在设计使用输入之前,这些输入的稳定设置时间为零。...同样,如果测试台在时钟的下降沿验证设计结果,那么这些设计输出稳定的时间将为零。 在同一时刻修改和读取值被称为simulation竞争条件。...使用设计时钟的相对边缘来驱动激励是测试台避免设计仿真竞争条件的一种简单方法,例如满足设计设置和保持时间要求。 测试台被建模为具有输入和输出端口的模块,类似于正在验证的设计。...最后一步是将测试台端口连接到设计端口,并生成时钟。这是在顶级模块中完成的。示例1-6显示了这方面的代码。
因为我们的平台有一个登录系统,所以所有case在被创建和被编辑的时候,会自动保存对应操作人的信息。 ? ? 2、接口信息 这部分就是基础的接口信息。例如url、path、端口号等,在此不做过多叙述。...3、请求参数 这部分主要是配置接口的请求参数,例如header、body之类的,json会直接存为string,而form会以key value的形式,转成json类型的string,在下文会做详细说明...例如我们在B接口中,需要依赖A接口的返回值,以下文截图为例: 将截图部分视为A接口,如果B接口中需要用到A接口返回的"success"的值,则以jsonPath或正则表达式的方式,将该字段值提取出来,然后设置变量名为...校验:真实值的取值方式,也支持jsonPath和正则表达式的方式两种方式,然后与预期值的对比,目前只支持equals(相等)和contains(包含)两种。emm… 目前只支持body的校验。...下篇文章将会讲解接口的具体执行部分(因为这两篇文章加起来,就可以做一个接口自动化框架了~~),有疑问的小伙伴可在文章下方留言,我会不断优化文章的内容!
SystemVerilog常用可综合IP模块库 想拥有自己的SystemVerilog IP库吗?设计时一个快捷键就能集成到自己的设计,酷炫的设计你也可以拥有!...宽参考时钟分频器 debounce.v 输入按钮的两周期去抖动 delay.sv 用于产生静态延迟或跨时钟域同步的有用模块 dynamic_delay.sv 任意输入信号的动态延迟 edge_detect.sv...full_adder SystemVerilog 中的 n 位全加器 full_subtractor SystemVerilog 中的 n 位全减法器 gray_counter 使用 SystemVerilog...为了解决这个复杂的问题,设计了这个库,它可以帮助您简化设计流程。使用一些简单的 API 可以轻松地在测试台中读取和写入标准位图文件 (.BMP)。...和 Qustasim 上测试) 包中的文件 文件 描述 bitmap_processing.sv 位图处理库。
时钟测试仪是如何校准的 通过对《JJF 1662-2017时钟测试仪校准规范》的认识,了解时钟测试仪一般由波形整形电路、分频电路、电子控制电路、显示电路等组成,具有快速测量电能表内置时钟信号、显示秒脉冲日计时误差及频率偏差等功能...校准项目和校准方法 外观及工作正常性检查 被校时钟测试仪应完好无损,无影响正常工作及读书的机械损伤,各开关、按键工作正常。 接通电源后,时钟测试仪应能正常工作,指示器显示正常,各功能安秀切换正常。...日计时误差 01.png 按图连接,时钟测试仪测量功能选择秒脉冲测量状态,函数发生器分别输出电平幅值5V,占空比50%的0.1hz和1hz方波信号到时钟测试仪秒脉冲测量端口,记录时钟测试仪显示秒脉冲日计时误差值...频率测量 按照上图连接,时钟测试仪测量功能选择频率测量状态,函数发生器输出电平幅值的正玄波信号到时钟测试仪频率测量端口,输入频率为时钟测试仪测频范围内最高频率值,记录时钟测试仪显示测量频率值,取3次测量结果的算术平均值作为测量结果...然而这个时间准不准,误差多少,各种接口是否匹配,就需要一个时钟误差测试仪来确认。统一精确的时间和频率标准是保证各大行业能系统性的安全运行,提高运行水平的一个重要措施。
通过对《JJF 1662-2017时钟测试仪校准规范》的认识,了解时钟测试仪一般由波形整形电路、分频电路、电子控制电路、显示电路等组成,具有快速测量电能表内置时钟信号、显示秒脉冲日计时误差及频率偏差等功能...校准项目和校准方法 外观及工作正常性检查 被校时钟测试仪应完好无损,无影响正常工作及读书的机械损伤,各开关、按键工作正常。 接通电源后,时钟测试仪应能正常工作,指示器显示正常,各功能安秀切换正常。...日计时误差 按图连接,时钟测试仪测量功能选择秒脉冲测量状态,函数发生器分别输出电平幅值5V,占空比50%的0.1hz和1hz方波信号到时钟测试仪秒脉冲测量端口,记录时钟测试仪显示秒脉冲日计时误差值,取...频率测量 按照上图连接,时钟测试仪测量功能选择频率测量状态,函数发生器输出电平幅值的正玄波信号到时钟测试仪频率测量端口,输入频率为时钟测试仪测频范围内最高频率值,记录时钟测试仪显示测量频率值,取3次测量结果的算术平均值作为测量结果...然而这个时间准不准,误差多少,各种接口是否匹配,就需要一个时钟误差测试仪来确认。统一精确的时间和频率标准是保证各大行业能系统性的安全运行,提高运行水平的一个重要措施。
,掌握基本的验证方法学有助于提高自己的debug效率,SystemVerilog是一种面向对象的语言,其设计的本意是用于搭建验证平台,主流的UVM方法也都是基于SystemVerilog实现的,所以立志成为...IC验证工程师的同学,SystemVerilog的深入学习和流行方法论的学习都是必不可少的。...而对于那些只想做IC设计的同学而言,SystemVerilog同样也是值得学习的。...设计方法 乒乓操作、流水线、串并转换、无毛刺切换、状态机等 跨时钟处理:快到慢、慢到快、异步FIFO(FIFO深度计算)等 ->时钟切换电路(Glitch-free clock switching circuit...芯片内部往往都自带测试电路,DFT的目的就是在设计的时候就考虑将来的测试。
执行逻辑优化以满足时钟速度要求。 执行逻辑优化以满足面积和功率要求, 执行逻辑优化以满足建立和保持时间。...-这些约束由设计工程师定义,并提供RTL代码中不可用的综合编译器信息,例如需要在ASIC或FPGA中实现的所需时钟速度、面积和功率目标。...第二个目的是编写验证程序来测试硬件模型。这两个目的有非常不同的语言要求。许多通用编程结构对于这两个目的都很有用,例如,if-else决策或for循环。...其他语言特性只能用于验证,例如约束随机测试(random test)生成。这些验证结构并不表示硬件功能,综合编译器也不支持这些验证结构。 IEEE尚未确定SystemVerilog的正式可综合子集。...这些限制包括检查RTL代码是否具有明确定义的时钟周期活动、单驱动程序逻辑等,综合编译器只需要编译RTL模型。综合不需要编译带有激励生成和输出验证的测试台代码。
systemverilog仿真器是事件驱动的仿真器,明确定义了不同的阶段来计划和执行所有事件。在仿真中,所有的事件都以timeslot为单位进行。...timeslot被划分为一组有序阶段,提供设计和测试代码之间的可预测交互。如下图所示,一个timeslot可以划分为五个主要阶段,每个阶段都可以进一步的被划分为细分的子阶段。 ?...Prepone:这是timeslot最先执行的阶段,并且只执行一次。来自测试平台对设计信号的采样发生在这个阶段。...用于执行systemverilog中program块的阻塞赋值,#0阻塞赋值,非阻塞赋值。这个独立的响应阶段确保在测试代码执行之前,设计代码的状态已经稳定。...[205] 什么是systemverilog中的unique约束? unique约束会令一组成员两两各不相同。下面是一个示例。
LLM的测试工具:LaVague平替成国内大模型 laVague 是将自然语言转化成浏览器交互的操作,完成自动化测试的大模型的agent。...智谱免费大模型平替huggingface的付费模型 智谱提供了embedding模型,并且免费账号提供100万个token,实名制再送400万。...就可以在Generate Code的row里面看到生成的python selenium代码,并且完成最终页面的测试执行工作,左侧是预览图。 PS:免费薅的token有有效期,不用省着用。...的分析,撰写为生成测试代码而需要的prompt,然后通过LLM生成测试用的code。...然后完成Code的执行,实现转译后到python测试脚本后代码执行工作,实现了从自然语言到动作的这样的生成,也就是text2action的AIGC。 至此,完成了LaVague的国内LLM平替。
SystemVerilog的RTL综合子集 SystemVerilog既是一种硬件设计语言,也是一种硬件验证语言。...IEEE SystemVerilog官方标准没有区分这两个目标,也没有指定完整SystemVerilog语言的可综合子集。...5、仿真或逻辑等价检查器(Logic Equivalence Checkers)(形式验证的一种形式)用于验证门级实现在功能上等同于RTL功能。 6、时钟树合成用于在整个设计中均匀分布时钟驱动。...通常,扫描链插入到工具中以增加设计的可测试性。 7、Place and route(放置和布线)软件计算如何在实际硅中布局,以及如何布线。...从历史上看,FPGA不能包含ASIC那么多的功能,只能以较慢的时钟速度运行,这是RTL级设计时的重要考虑因素。FPGA技术的最新进展显著缩小了FPGA和ASIC之间的差异。
值得一提的是,本文虽偏重定性分析和结论摆出,但是这些结论还是具有很不错的价值,例如对SystemVerilog仿真速度的编码层面优化方法提供了一些思路和认知,对SystemVerilog代码风格建立提供了一个新的观察视角...例3.3:UVM平台中妙用uvm_report_enabled()函数作为条件来优化。 如下例,如果打印详细级别设置为UVM_DEBUG或高于UVM_DEBUG,则触发消息打印。 ?...例3.4:再来一个UVM平台中玩好条件的案例,monitor或者driver进行port传递时,以port的size()为条件,减少不必要的打数据包的次数。 ?...13.对于UVM平台中带约束的随机,尽量分解或简化 这样写比较慢: ? 这样写会快很多: ? 在上图反例中,循环中对其相邻对每个数组元素设置约束,假设100个元素,就相当于必须同时求解100个约束。...所以除此之外,尽量使用特定事件触发器而不是诸如系统时钟之类的通用事件来采样覆盖率、覆盖组共享共同表达式等手段也可以减少仿真时间。 16.
消除亚稳态; 一、有毛刺的时钟切换 纯组合逻辑的时钟切换,由于为电平触发,不可避免会产生毛刺; ?...看似很简单,实现了时钟的切换,实则存在着很大的隐患,如下图所示: ?...由图中可知,SELECT信号变化的位置没有和切换的时钟对齐;当SELECT信号发生改变时,当前时钟源(CLK0)正好处于高电平,因此,会在输出端产生毛刺。 ? ?...对上图的Verilog描述: assign outclk = (clk1 & select) | (~select & clk0); 二、相关时钟源的时钟切换 以下为两个时钟源成倍数的关系的时钟切换电路...异步时钟源的切换是在相关时钟源切换的基础上插入一个上升沿D触发器,对选择信号进行同步处理,避免产生亚稳态。
避免:优先采用同步设计,确保所有信号变化都与同一个时钟沿同步。正确处理时钟域之间的交互,使用FIFO、双缓存等技术解决跨时钟域问题。2. 时序约束问题:忽视时序约束的设置,导致设计无法达到预期频率。...时钟树综合(CTS):优化时钟网络,保证时钟信号的均匀分布。时钟域跨越(CDC):使用同步器、FIFO或其他方法处理不同时钟域间的通信。5....硬件描述语言扩展SystemVerilog:除了基础的Verilog,学习SystemVerilog的高级特性,如类、接口、覆盖等。VHDL-AMS:用于混合信号设计,结合模拟和数字电路。9....仿真流程编写测试平台(Testbench):模拟输入信号,生成预期的输出,用于验证设计。编译与仿真:将设计和测试平台一起编译,运行仿真以检查设计行为。...覆盖率分析:检查设计覆盖了多少测试用例,确保测试的全面性。激励生成器:使用随机或自动生成的激励,增加测试的多样性。
大家好,又见面了,我是你们的朋友全栈君。 电子时钟模块在很多系统上都会背集成,是一个运用比较广泛的模块,针对电子时钟,我们应该当如何设计测试用例呢?...我说说自己的套路吧:确定测试目标(其实就是确定测试用例的粒度)——提取测试元素——分类(其实就是一个整体的等价法)——针对各类进行分析(主要还是使用等价和边界)——正交表生成用例(因果图和判定表也是经常使用的方法...)——根据实际测试环境情况删除部分case——增加错误推断和性能测试用例——使用场景法验证覆盖率——生成初步测试用例报告——同行评审——归档 如下图,一个电子时钟系统 下面我们step by step...来设计用例 1、测试目标: 手工部分完成基本功能的覆盖,自动化部分设计N条(1000~5000)数据测试。...假设用例最终执行者为有经验的Tester,测试用例粒度可适当放宽,这样在CASE跑完后可以充分发挥tester自动性,增加case外的测试。
1.墙上时钟时间(wall clock time): 顾名思义,它是“挂在墙上的时钟”的时间,这个时间也就是我们真实世界真正“走过的时间”。...你跑一个case,对于linux系统来说,就是一个或多个进程,而这个wall clock time,它是进程运行的时钟总量。...没错,我们追求的最根本目标是减少墙上时钟时间(wall clock time),即我们需要的是减少自己浪费的真实世界的时间,多跑几轮case或者早点跑出结果早下班。...所以对于测试某种手段是否减少了总时间花费,是否有收益(尤其是不太明显的手段),单纯的通过前后两次跑同样的case,对比统计结果是不足以判别的,如果不是明显的提速手段,可能会出现使用后wall clock...但是如果基于相同的服务器等因素的状态,或基于统计的方式多次测试评估,就可以看出总体速度的提升趋势。 2.以相对“重量级”的方式进一步详细分析仿真运行的性能信息。
本文重点参考了文章 《Clock Domain Crossing (CDC) Design & Verification Techniques Using SystemVerilog》 多周期路径法 在上期的文章跨时钟域的方法...b_ack传递回原时钟域,作为握手确认信号,只有当原时钟域接收到该电平信号并产生脉冲信号以后,才允许进入下一次的信号传输,因此在源时钟域需要有一个状态机控制这两种状态之间的切换,这个状态机的状态很简单,...上述电路因为在传递过程中的多个时钟周期内,信号都被保持不变,因此理论上是不存在亚稳态现象的,是可以保持正常传输的。...没有反馈到发送时钟域,直到数据已加载,然后b_ack信号被发送回源时钟域。状态机的代码如下: 至此,MCP的方法就差不多讲完了。...至于使用异步FIFO,格雷码等,在以前的文章中讲述过,链接如下: 异步FIFO设计 Clifford论文系列--多异步时钟设计的综合及脚本技术(1) Clifford论文系列--多异步时钟设计的综合及脚本技术
Junit maven测试使用的是surefire这个插件。所以需要对这个插件配置一个文件编码的参数就可以了。...还有一个前提就是你的项目已经设置了编码为UTF-8,如果你的项目没有设置为UTF-8,那么光有下面的配置你看到的还将是乱码。
SystemVerilog提供了几种网络类型,后面会对此进行了更详细的讨论。 两态和四态数据类型(位和逻辑) SystemVerilog变量可以是2态数据类型或4态数据类型。...必须通过仿真器存储sum的值,直到下一次a或b发生变化。类似地,always_ff过程将在时钟的每个正边缘执行if-else决策语句。out的值必须在时钟周期之间通过仿真器进行存储。...由于2态数据类型只能有一个0或1值,因此在仿真过程中出现错误的设计可能会正常运行,这是不好的!使用2态变量的合适位置是验证试验台中的随机刺激。...在下面的示例中,直到clk的第一个正边缘出现,变量q才被初始化。作为一种4态逻辑类型,在第一个时钟之前,q将有一个X值,此时q将被指定为0值或d值。...如果clk的正边缘没有出现,该X值可能表示设计问题,可能是由于时钟选通或其他一些情况。 笔记 未初始化的2态变量可以隐藏设计问题。未初始化的2态变量的值为0,这可能是一个合法的复位值。
UVM提供了丰富的基类库和验证方法学,并且被主流的EDA工具、IP供应商和设计公司采用。现在,使用SystemVerilog基本上等同于使用UVM验证。...如果你要问我,SystemVerilog和UVM到底是啥关系,我觉得汉字和诗的比喻也许比较恰当。我自然不会说是code language和library的关系,太没有想象空间。...为了更好地支持验证环境,SystemVerilog提供了面向对象编程(OOP)的能力、受约束随机激励、断言和功能覆盖率等特性。...2、 项目之间复用 基于UVM的验证环境很容易项目之间复用,同时工程师之间对于验证环境也容易达成共识。这是仅仅使用SystemVerilog语言无法做到的。...为了充分利用这种OOP在验证平台中的灵活性,有必要利用factory机制这个设计模式在验证过程中实现类的替换。
领取专属 10元无门槛券
手把手带您无忧上云