0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

借助GPT4理解仿真中競爭處理的方法

Spinal FPGA ? 來源:Spinal FPGA ? 2023-11-25 14:23 ? 次閱讀

上周微信群里的一個(gè)小伙伴提到的一個(gè)關(guān)于仿真中不達(dá)預(yù)期的一個(gè)問題,其中牽涉到關(guān)于仿真中信號競爭等問題。這個(gè)問題之前算是不求甚解。這周經(jīng)一位大佬的提點(diǎn),結(jié)合GPT4的幫助,來好好梳理下這個(gè)問題。

由于本人對底層不求甚解,僅做總結(jié)與梳理,真實(shí)細(xì)節(jié)還需扒代碼底層,有感興趣的可自行去探索。

不得不說科技改變生活,GPT確實(shí)強(qiáng)大。

不達(dá)預(yù)期的仿真行為

先來看一個(gè)簡單的電路:

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

小伙兒的需求很簡單。在仿真中根據(jù)當(dāng)前的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)
}
}

看起來沒啥毛病是吧,時(shí)鐘上升沿之后將pc+1驅(qū)動(dòng)給dut.inst。然而仿真結(jié)果卻并不如人意:

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

按照正常的理解,這里面inst的值應(yīng)該等于pc的值加1才行對吧,然而仿真波形卻顯示inst的值和pc的值一致。仿真器腦抽了?

在執(zhí)行inst賦值前加上一行打?。?/p>

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)
}
}

仿真執(zhí)行時(shí)打印信息如下:

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

這就有點(diǎn)意思了,在170時(shí)刻,明明clk已經(jīng)是高電平,按道理來時(shí)鐘上升沿已然產(chǎn)生,然而pc打印出來的值仍然是0!

先說這里如何修復(fù)這個(gè)問題,你只需添加一個(gè)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)
}
}

如此,即可符合仿真預(yù)期:

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

如果覺得能用即可,那么針對這種問題看到這里就可以了~






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 高電平
    +關(guān)注

    關(guān)注

    6

    文章

    149

    瀏覽量

    21387
  • CLK
    CLK
    +關(guān)注

    關(guān)注

    0

    文章

    127

    瀏覽量

    17171
  • GPT
    GPT
    +關(guān)注

    關(guān)注

    0

    文章

    354

    瀏覽量

    15379

原文標(biāo)題:借助GPT4好好理解下仿真中競爭的處理

文章出處:【微信號:Spinal FPGA,微信公眾號:Spinal FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    FRED在背光板仿真中的應(yīng)用

    FRED在背光板仿真中的應(yīng)用
    發(fā)表于 12-22 16:02 ?34次下載
    FRED在背光板<b class='flag-5'>仿真中</b>的應(yīng)用

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

    電子元器件在電路仿真中如何建模 1 引言 這里針對建模的重要性和必要性,研究當(dāng)前流行的電子電路仿真工具的電子元器件模型,提出兩種建模方法
    發(fā)表于 04-12 16:23 ?1.2w次閱讀
    電子元器件在電路<b class='flag-5'>仿真中</b>如何建模

    saber仿真中的問題處理方法

    由于saber仿真要求較高,所以給新人造成了一些困擾,現(xiàn)在我們交流下一些常見錯(cuò)誤的解決方法:1)設(shè)置元件屬性時(shí)加了單位
    發(fā)表于 04-21 10:43 ?1.3w次閱讀

    PSpice教程:PSpice仿真中收斂問題的研究

    PSpice教程:PSpice仿真中收斂問題的研究
    發(fā)表于 04-07 15:33 ?0次下載

    三菱PLC模擬仿真中文軟件

    三菱PLC模擬仿真中文軟件。
    發(fā)表于 01-14 16:46 ?61次下載

    淺談ChatGPT的最新“升級版本”——GPT4模型

    瀏覽OpenAI發(fā)布的演示視頻發(fā)現(xiàn),GPT4的語言理解和生成能力均超過了ChatGPT,可以解答ChatGPT無法
    的頭像 發(fā)表于 03-22 22:26 ?3097次閱讀

    GPT4搞電機(jī)?

    GPT4可以搞電機(jī)嗎?
    的頭像 發(fā)表于 04-06 10:08 ?1418次閱讀
    用<b class='flag-5'>GPT4</b>搞電機(jī)?

    GPT4做Leetcode的能力

    雖然一次周賽的幾個(gè)題目說明不了太多問題,比如這個(gè)周賽的Hard題目就是板子題,算不上Hard,也許把第三題和第四題的順序換一下比較合適。但是,GPT4的表現(xiàn)已經(jīng)嚴(yán)重超出了我的預(yù)期。
    的頭像 發(fā)表于 04-28 15:27 ?2306次閱讀
    <b class='flag-5'>GPT4</b>做Leetcode的能力

    GPT-4 的模型結(jié)構(gòu)和訓(xùn)練方法

    GPT-4 的發(fā)布報(bào)道上,GPT-4 的多模態(tài)能力讓人印象深刻,它可以理解圖片內(nèi)容給出圖片描述,甚至能在圖片內(nèi)容的基礎(chǔ)上理解其中的隱喻或推斷下一時(shí)刻的發(fā)展。
    的頭像 發(fā)表于 05-22 15:21 ?2641次閱讀
    <b class='flag-5'>GPT-4</b> 的模型結(jié)構(gòu)和訓(xùn)練<b class='flag-5'>方法</b>

    你考慮用GPT4搞電機(jī)嗎?

    最近的GPT4有多火這里不需要贅述了。微軟,蘋果,baidu等各巨頭紛紛跟進(jìn)。這個(gè)賽道最近是各種資本涌入,猶如PC互聯(lián)網(wǎng)轉(zhuǎn)型到移動(dòng)互聯(lián)網(wǎng)時(shí)的爆發(fā)。
    發(fā)表于 07-05 09:16 ?346次閱讀
    你考慮用<b class='flag-5'>GPT4</b>搞電機(jī)嗎?

    gpt-4怎么用 英特爾Gaudi2加速卡GPT-4詳細(xì)參數(shù)

    介紹GPT-4 詳細(xì)參數(shù)及英特爾發(fā)布 Gaudi2 加速器相關(guān)內(nèi)容,對大模型及 GPU 生態(tài)進(jìn)行探討和展望。英特爾發(fā)布高性價(jià)比Gaudi2加速卡GPT4詳細(xì)參數(shù)分析。
    發(fā)表于 07-21 10:50 ?874次閱讀
    <b class='flag-5'>gpt-4</b>怎么用 英特爾Gaudi2加速卡<b class='flag-5'>GPT-4</b>詳細(xì)參數(shù)

    chatGPT和GPT4有什么區(qū)別

    chatGPT和GPT4有什么區(qū)別 GPT(Generative Pre-trained Transformer)系列模型由OpenAI公司開發(fā),是一組用于自然語言處理(NLP)任務(wù)的人工智能模型
    的頭像 發(fā)表于 08-09 15:18 ?3117次閱讀

    ChatGPT Plus怎么支付 GPT4得訂閱嗎?

    自去年年底 OpenAI 轉(zhuǎn)型發(fā)布 ChatGPT 以來,生成式 AI 成為許多硅谷投資者關(guān)注的焦點(diǎn)。該聊天機(jī)器人使用從互聯(lián)網(wǎng)和其他地方抓取的大量數(shù)據(jù)來對人類提示產(chǎn)生預(yù)測響應(yīng)。GPT-4 的許多方面
    的頭像 發(fā)表于 10-10 12:16 ?1782次閱讀
    ChatGPT Plus怎么支付 <b class='flag-5'>GPT4</b>得訂閱嗎?

    MATLAB電路仿真中能講電流匯總的元件

    在MATLAB電路仿真中,可以使用許多元件來匯總電流。以下是一些常見的元件和它們在電路中的作用: 電阻(Resistor):電阻是電路中最基本的元件之一,用于限制電流的流動(dòng)。在MATLAB電路仿真中
    的頭像 發(fā)表于 04-21 09:23 ?3311次閱讀

    股價(jià)久違飆漲,商湯要用自己的Scaling law挑戰(zhàn)GPT4

    前一天的“2024年商湯技術(shù)交流日”上,商湯發(fā)布了對標(biāo)GPT4-Turbo的大模型日日新大模型SenseNova5.0,追趕GPT4可能是當(dāng)下中國大模型行業(yè)的集體目
    的頭像 發(fā)表于 05-08 08:05 ?276次閱讀
    股價(jià)久違飆漲,商湯要用自己的Scaling law挑戰(zhàn)<b class='flag-5'>GPT4</b>