色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何自動生成verilog代碼

芯司機 ? 來源:ExASIC ? 2024-11-05 11:45 ? 次閱讀

以下文章來源于ExASIC,作者陳鋒

介紹幾種自動生成verilog代碼的方法。

第一種:python直接write到文件

f = open('mytest.v', 'w')
# rtl = ...
f.write(rtl)

說明:這種方法相當簡單樸素,python做出需要的字符串,寫到文件。好處是不需要技巧,壞處是python代碼可維護性較差。

第二種:讀配置文件再生成

與第一種的差異是,把各種可配置的信息存到配置文件里,如excel、json、yaml,在腳本里讀取配置文件再用第一種方法生成字符串。

這種方法的好處是腳本相對固定,只需要修改配置文件就可以重新生成verilog代碼。但python腳本還是相對較亂,因為從配置參數到目標verilog中間需要各種字符串處理,如正則替換,format,進制轉換等。當目標verilog的格式要求一變,python腳本還是需要重寫。

85821bd6-9804-11ef-a511-92fbcf53809c.png

第三種:利用模板語言

現在我們來利用模板語言,比如jinja2,(https://docs.jinkan.org/docs/jinja2),把配置參數與目標verilog格式拆分開來。

如下圖,有兩個模板,RTL模板和驗證模板,用同一個配置參數經過不同的模板,就可以得到不同的代碼。配置參數與模板轉換的過程是由模板引擎來實現,不需要我們再重新造輪子。

8595c5d2-9804-11ef-a511-92fbcf53809c.png

這種方法的好處是只需要把精力花了編寫模板身上,而其它部分都是由現成的庫來實現,這樣就只需要寫很少量的python代碼了。缺點是這種模板語言與Verilog語言本身有比較大的差異,需要稍微學習一下。

第四種:Verilog里內嵌python

在Verilog代碼注釋里嵌入幾行python代碼,而保持大部分Verilog不動。比如下面的例子:

always@(posedge clk, negedge rst_n)
  if(!rst_n)
     q[7:0] <= 8'b0;
  else begin
// PYTHON_BEGIN
// import random
// data = []
// for i in range(8)
//   data.append(random.randint(0, 1))
// for i in range(8):
//   print('q[{}]'.format(data[i]))
// PYTHON_END
  end

可見,這串代碼的注釋中用PYTHON_BEGIN和PYTHON_END括起了一段python代碼。我們需要提取出這段python,把python的執行結果替換到原處。

當然為了保證代碼可以再次生成,我們不能刪除python源碼,而是需要在注釋下方生成。重新生成時會先刪除PY_VLG_BEGIN和PY_VLG_END之間的verilog代碼。

always@(posedge clk, negedge rst_n)
  if(!rst_n)
     q[7:0] <= 8'b0;
  else begin
// PYTHON_BEGIN
// import random
// data = []
// for i in range(8)
//   data.append(random.randint(0, 1))
// for i in range(8):
//   print('q[{}] <= {};'.format(i, data[i]))
// PYTHON_END
// PY_VLG_BEGIN
    q[0] <= 0;
q[1] <= 1;
q[2] <= 0;
q[3] <= 0;
q[4] <= 1;
q[5] <= 1;
q[6] <= 1;
q[7] <= 0;
// PY_VLG_END
  end

這個“提取->執行->替換”的腳本具有通用性,編寫起來比較簡單。不需要頻繁修改。

當verilog里內嵌的python功能接近,或者有共性時,就可以把這種處理函數寫到一個py庫里,用時import進來。

優勢:只需要維護一份verilog文件(不需要額外的python腳本了),對設計工程師友好。缺點:每個公司都需要建立自己的共用py庫,當庫越來越龐大時,新人或者換工作后就需要重新學習或者重新零開始。

第五種:第四種基礎上把常用規則提煉,做成開源工具

每個人單獨搞一套就會變得不可持續。可以以開源項目的方式,愛好者共同開發和維護,不斷迭代,形成行業規范。例如:HDLGen(https://github.com/WilsonChen003/HDLGen)。

但很可能貢獻者有限,停止維護,慢慢荒廢。

第六種:利用DSL來編寫代碼

比如SpinalHDL(https://thucgra.github.io/SpinalHDL_Chinese_Doc)、Chisel(https://www.chisel-lang.org)這種基于Scala的硬件開發工具。優點:有規范,行業標準。缺點:創新得太徹底,學習成本非常高,遇到問題很難找到地方咨詢。并與現有的Verilog開發流程差異較大,DSL自成一套設計和驗證的方法。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110074
  • 字符串
    +關注

    關注

    1

    文章

    578

    瀏覽量

    20506
  • 代碼
    +關注

    關注

    30

    文章

    4779

    瀏覽量

    68521
  • python
    +關注

    關注

    56

    文章

    4792

    瀏覽量

    84627

原文標題:幾種自動生成verilog代碼的方法

文章出處:【微信號:芯司機,微信公眾號:芯司機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何利用python自動生成verilog模塊例化模板?

    如何利用python自動生成verilog模塊例化模板?
    發表于 06-21 06:06

    什么是代碼自動生成工具

    MCU代碼自動生成工具介紹文檔編輯原標題:GoKit3二次開發-代碼自動生成工具介紹前文需知1.
    發表于 11-03 06:04

    CRC校驗代碼自動生成工具

    CRC校驗代碼自動生成工具根據輸入條件自動產生各種CRC的VHDL或verilog源程序
    發表于 05-20 11:16 ?294次下載
    CRC校驗<b class='flag-5'>代碼</b><b class='flag-5'>自動</b><b class='flag-5'>生成</b>工具

    LFSR代碼自動生成工具v1.20 beta

    LFSR代碼自動生成工具v1.20 beta 線形反饋移位寄存器(LFSR)是數字系統中一個重要的結構,本程序可以自動產生AHDL,VHDL,V
    發表于 05-14 11:05 ?50次下載

    verilog_代碼資料

    verilog_代碼資料,非常實用的代碼示例。
    發表于 02-18 15:00 ?37次下載

    verilog代碼規范

    verilog代碼規范,學會寫代碼還不行,我們需要更加的規范。
    發表于 03-25 14:43 ?24次下載

    Verilog 入門的實例代碼

    Verilog 入門的實例代碼,有需要的下來看看
    發表于 05-24 10:03 ?20次下載

    STM32庫函數代碼自動生成器正式版

    STM32庫函數代碼自動生成器正式版,感興趣的可以看看。
    發表于 07-13 16:55 ?0次下載

    STM32庫函數代碼自動生成器正式版

    STM32庫函數代碼自動生成器正式版 STM32庫函數代碼自動生成器正式版
    發表于 07-25 18:52 ?0次下載

    基于普適服務的代碼自動生成研究_黃凱

    基于普適服務的代碼自動生成研究_黃凱
    發表于 03-16 10:48 ?0次下載

    關于自動生成高效的代碼的方法分析和分享

    基于模型的設計流程和自動代碼生成在汽車等行業基本上已經是標準手段,然而在大多使用 MATLAB 語言的通信和數據分析領域,代碼生成的接受度還
    的頭像 發表于 09-12 11:48 ?3356次閱讀
    關于<b class='flag-5'>自動</b><b class='flag-5'>生成</b>高效的<b class='flag-5'>代碼</b>的方法分析和分享

    關于為FPGA和ASIC生成Verilog和VHDL代碼分析和應用介紹

    HDL Coder 還可以生成第三方 lint 工具腳本,用于檢查您生成的 HDL 代碼。HDL Coder 自動生成
    的頭像 發表于 09-18 14:51 ?5394次閱讀
    關于為FPGA和ASIC<b class='flag-5'>生成</b><b class='flag-5'>Verilog</b>和VHDL<b class='flag-5'>代碼</b>分析和應用介紹

    用于實現和評估TMR方法的自動快速可綜合Verilog代碼生成器工具介紹

    端口添加多數表決電路。構建這種三重化方案是一項非常重要的任務,需要花費大量的時間和精力來修改設計代碼。本文開發了RASP-TMR工具,該工具具有以可綜合的Verilog設計文件為輸入,對設計進行解析和三次復制的功能。該工具還生成
    發表于 04-16 08:00 ?3次下載
    用于實現和評估TMR方法的<b class='flag-5'>自動</b>快速可綜合<b class='flag-5'>Verilog</b><b class='flag-5'>代碼</b><b class='flag-5'>生成</b>器工具介紹

    如何在VScode中自動生成Verilog仿真文件

    一、實現功能 1、可以自動創建文件夾 2、根據Verilog文件自動生成測試文件模板(TB文件名字是) 3、自動打開
    的頭像 發表于 06-23 17:48 ?3476次閱讀

    c語言代碼自動生成工具,MCU代碼自動生成工具介紹

    MCU代碼自動生成工具介紹文檔編輯原標題:GoKit3二次開發-代碼自動生成工具介紹前文需知1.
    發表于 10-28 17:36 ?8次下載
    c語言<b class='flag-5'>代碼</b><b class='flag-5'>自動</b><b class='flag-5'>生成</b>工具,MCU<b class='flag-5'>代碼</b><b class='flag-5'>自動</b><b class='flag-5'>生成</b>工具介紹
    主站蜘蛛池模板: 97久久伊人精品影院| 视频一区国产精戏刘婷30| 精品无码久久久久久久动漫| 俄罗斯aaaaa一级毛片| 99热久久这里只有精品| 24小时日本在线观看片免费| 一本之道高清视频在线观看| 亚洲精品久久久久69影院| 亚婷婷洲AV久久蜜臀无码| 四虎影视国产精品亚洲精品| 日本夜夜夜| 乳女教师欲乱动漫无修版动画| 男人叼女人| 欧美日韩久久久精品A片| 女教师二十三歳| 日本高清无人区影院| 日本粉嫩学生毛绒绒| 三级黄色在线免费观看| 无码内射成人免费喷射| 玩高中女同桌肉色短丝袜脚文| 双性诱受灌满哭求饶BL| 羞羞答答的免费视频在线观看| 亚州精品视频| 一级片mp4| 97超碰97资源在线观看视频| 99久久免费视频6| 大胆国模一区二区三区伊人| 国产成年人在线观看| 国产睡熟迷奷系列网站| 九九久久国产| 美女脱光app| 日韩中文无线码在线视频| 无人区尖叫之夜美女姐姐视频| 香蕉精品国产自在现线拍| 亚洲欧美日韩在线码不卡| 在线免费公开视频| 99热这里只有精品6| 国产成人精品综合在线| 国产亚洲精品久久久久久线投注 | 我要女人的全黄录像| 亚洲欧美日韩在线观看一区二区三区|