0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

借助GPT4理解仿真中竞争处理的方法

Spinal FPGA 来源:Spinal FPGA 2023-11-25 14:23 次阅读

上周微信群里的一个小伙伴提到的一个关于仿真中不达预期的一个问题,其中牵涉到关于仿真中信号竞争等问题。这个问题之前算是不求甚解。这周经一位大佬的提点,结合GPT4的帮助,来好好梳理下这个问题。

由于本人对底层不求甚解,仅做总结与梳理,真实细节还需扒代码底层,有感兴趣的可自行去探索。

不得不说科技改变生活,GPT确实强大。

不达预期的仿真行为

先来看一个简单的电路:

caseclass Test() extends Component {
val pc=outUInt(8bits) setAsReg() init(0)
val inst=inUInt(8bits)
pc:=pc+1
}

小伙儿的需求很简单。在仿真中根据当前的pc值加1后反馈给inst输入引脚。不假思索即可写出下面的仿真代码:

object TestApp extendsApp {
SimConfig.withFstWave.compile(bootTest()).doSim{dut=>
dut.clockDomain.forkStimulus(10)
fork{
while(true){
dut.clockDomain.waitSampling()
dut.inst#=dut.pc.toInt+1
}
}
dut.clockDomain.waitSampling(10)
}
}

看起来没啥毛病是吧,时钟上升沿之后将pc+1驱动给dut.inst。然而仿真结果却并不如人意:

71d71ece-8b49-11ee-939d-92fbcf53809c.jpg

按照正常的理解,这里面inst的值应该等于pc的值加1才行对吧,然而仿真波形却显示inst的值和pc的值一致。仿真器脑抽了?

在执行inst赋值前加上一行打印:

object TestApp extends App {
SimConfig.withFstWave.compile(bootTest()).doSim{dut=>
dut.clockDomain.forkStimulus(10)
fork{
while(true){
dut.clockDomain.waitSampling()
println(s"time:${simTime()}	 pc:${dut.pc.toInt}	isnt_in:${dut.inst.toInt}	 clk:${dut.clockDomain.clockSim.toBoolean}")
dut.inst#=dut.pc.toInt+1
}
}
dut.clockDomain.waitSampling(10)
}
}

仿真执行时打印信息如下:

time:170pc:0isnt_in:64clk:true
time:180pc:1isnt_in:1clk:true
time:190pc:2isnt_in:2clk:true
time:200pc:3isnt_in:3clk:true
time:210pc:4isnt_in:4clk:true
time:220pc:5isnt_in:5clk:true
time:230pc:6isnt_in:6clk:true
time:240pc:7isnt_in:7clk:true
time:250pc:8isnt_in:8clk:true

这就有点意思了,在170时刻,明明clk已经是高电平,按道理来时钟上升沿已然产生,然而pc打印出来的值仍然是0!

先说这里如何修复这个问题,你只需添加一个sleep(0):

object TestApp extends App {
SimConfig.withFstWave.compile(bootTest()).doSim{dut=>
dut.clockDomain.forkStimulus(10)
fork{
while(true){
dut.clockDomain.waitSampling()
sleep(0)
println(s"time:${simTime()}	 pc:${dut.pc.toInt}	isnt_in:${dut.inst.toInt}	 clk:${dut.clockDomain.clockSim.toBoolean}")
dut.inst#=dut.pc.toInt+1
}
}
dut.clockDomain.waitSampling(10)
}
}

如此,即可符合仿真预期:

71efa84a-8b49-11ee-939d-92fbcf53809c.jpg

Log打印:

time:170pc:1isnt_in:51clk:true
time:180pc:2isnt_in:2clk:true
time:190pc:3isnt_in:3clk:true
time:200pc:4isnt_in:4clk:true
time:210pc:5isnt_in:5clk:true
time:220pc:6isnt_in:6clk:true
time:230pc:7isnt_in:7clk:true
time:240pc:8isnt_in:8clk:true
time:250pc:9isnt_in:9clk:true

如果觉得能用即可,那么针对这种问题看到这里就可以了~






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 高电平
    +关注

    关注

    6

    文章

    148

    浏览量

    21357
  • CLK
    CLK
    +关注

    关注

    0

    文章

    127

    浏览量

    17143
  • GPT
    GPT
    +关注

    关注

    0

    文章

    352

    浏览量

    15332

原文标题:借助GPT4好好理解下仿真中竞争的处理

文章出处:【微信号:Spinal FPGA,微信公众号:Spinal FPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FRED在背光板仿真中的应用

    FRED在背光板仿真中的应用
    发表于 12-22 16:02 34次下载
    FRED在背光板<b class='flag-5'>仿真中</b>的应用

    电子元器件在电路仿真中如何建模

    电子元器件在电路仿真中如何建模 1 引言 这里针对建模的重要性和必要性,研究当前流行的电子电路仿真工具的电子元器件模型,提出两种建模方法
    发表于 04-12 16:23 1.2w次阅读
    电子元器件在电路<b class='flag-5'>仿真中</b>如何建模

    saber仿真中的问题处理方法

    由于saber仿真要求较高,所以给新人造成了一些困扰,现在我们交流下一些常见错误的解决方法:1)设置元件属性时加了单位
    发表于 04-21 10:43 1.3w次阅读

    PSpice教程:PSpice仿真中收敛问题的研究

    PSpice教程:PSpice仿真中收敛问题的研究
    发表于 04-07 15:33 0次下载

    三菱PLC模拟仿真中文软件

    三菱PLC模拟仿真中文软件。
    发表于 01-14 16:46 61次下载

    浅谈ChatGPT的最新“升级版本”——GPT4模型

    浏览OpenAI发布的演示视频发现,GPT4的语言理解和生成能力均超过了ChatGPT,可以解答ChatGPT无法
    的头像 发表于 03-22 22:26 3048次阅读

    GPT4搞电机?

    GPT4可以搞电机吗?
    的头像 发表于 04-06 10:08 1408次阅读
    用<b class='flag-5'>GPT4</b>搞电机?

    GPT4做Leetcode的能力

    虽然一次周赛的几个题目说明不了太多问题,比如这个周赛的Hard题目就是板子题,算不上Hard,也许把第三题和第四题的顺序换一下比较合适。但是,GPT4的表现已经严重超出了我的预期。
    的头像 发表于 04-28 15:27 2288次阅读
    <b class='flag-5'>GPT4</b>做Leetcode的能力

    GPT-4 的模型结构和训练方法

    GPT-4 的发布报道上,GPT-4 的多模态能力让人印象深刻,它可以理解图片内容给出图片描述,甚至能在图片内容的基础上理解其中的隐喻或推断下一时刻的发展。
    的头像 发表于 05-22 15:21 2600次阅读
    <b class='flag-5'>GPT-4</b> 的模型结构和训练<b class='flag-5'>方法</b>

    你考虑用GPT4搞电机吗?

    最近的GPT4有多火这里不需要赘述了。微软,苹果,baidu等各巨头纷纷跟进。这个赛道最近是各种资本涌入,犹如PC互联网转型到移动互联网时的爆发。
    发表于 07-05 09:16 335次阅读
    你考虑用<b class='flag-5'>GPT4</b>搞电机吗?

    gpt-4怎么用 英特尔Gaudi2加速卡GPT-4详细参数

    介绍GPT-4 详细参数及英特尔发布 Gaudi2 加速器相关内容,对大模型及 GPU 生态进行探讨和展望。英特尔发布高性价比Gaudi2加速卡GPT4详细参数分析。
    发表于 07-21 10:50 858次阅读
    <b class='flag-5'>gpt-4</b>怎么用 英特尔Gaudi2加速卡<b class='flag-5'>GPT-4</b>详细参数

    chatGPT和GPT4有什么区别

    chatGPT和GPT4有什么区别 GPT(Generative Pre-trained Transformer)系列模型由OpenAI公司开发,是一组用于自然语言处理(NLP)任务的人工智能模型
    的头像 发表于 08-09 15:18 3039次阅读

    ChatGPT Plus怎么支付 GPT4得订阅吗?

    自去年年底 OpenAI 转型发布 ChatGPT 以来,生成式 AI 成为许多硅谷投资者关注的焦点。该聊天机器人使用从互联网和其他地方抓取的大量数据来对人类提示产生预测响应。GPT-4 的许多方面
    的头像 发表于 10-10 12:16 1754次阅读
    ChatGPT Plus怎么支付 <b class='flag-5'>GPT4</b>得订阅吗?

    MATLAB电路仿真中能讲电流汇总的元件

    在MATLAB电路仿真中,可以使用许多元件来汇总电流。以下是一些常见的元件和它们在电路中的作用: 电阻(Resistor):电阻是电路中最基本的元件之一,用于限制电流的流动。在MATLAB电路仿真中
    的头像 发表于 04-21 09:23 2883次阅读

    股价久违飙涨,商汤要用自己的Scaling law挑战GPT4

    前一天的“2024年商汤威廉希尔官方网站 交流日”上,商汤发布了对标GPT4-Turbo的大模型日日新大模型SenseNova5.0,追赶GPT4可能是当下中国大模型行业的集体目
    的头像 发表于 05-08 08:05 276次阅读
    股价久违飙涨,商汤要用自己的Scaling law挑战<b class='flag-5'>GPT4</b>