數字IC前端 學習隨筆(2)

2021-10-06 23:42:53 字數 1462 閱讀 1476

q6:systemverilog的property用法

q7: 一些systemverilog 運算子

q8:stimulation region

a1:考慮這些情況,往往是我們想到了模組可能被以什麼情況來操作,但是在有關計算機體系結構的教科書中,在指令集並行有關的章節中提到了資料冒險的概念。

raw寫後讀:j在i還沒寫入時就讀取同一位置,會讀取舊值

waw寫後寫:j在i還沒寫入時就寫入同一位置,會被i寫入覆蓋(存在於i指令執行時間較長,如浮點運算或乘法指令)

war讀後寫:j在i還沒讀入時就寫入同一位置,i錯誤讀取新值(一般先讀後寫的指令集不會出現,可能情況是j提前寫而i在流水線後期才讀的情況)

a2:為了避免在rtl**行為中發生的訊號競爭問題,常採用非阻塞賦值或者特定的訊號延遲來解決同步問題。而clocking塊基於時鐘週期對訊號進行驅動或者取樣的方式,可使得testbnch不用糾結於如何準確及時的對訊號驅動或者取樣,從而可以消除訊號競爭問題。

eg:

clocking bus @(posedge clock1)

;default input #10ns output #2ns;

input data, ready, enable;

output negedge ack;

input #1step addr;

endclocking

背景**舉例:

timescale 1ns/1ps initial begin //產生時鐘clk1 forever#5 clk1 <=!clkl; end //產生時鐘clk2 always@(clk1) clk2 <= clk1; end initial begin #10 rstn <= 0; #20 rstn <= 1; end always@(posedge clk1,negedge rstn)begin if (!rstn) d1 <= 0; else d1 <= d1 + 1; end // 在c1k1,clk2上公升沿列印出d1的數值 always@(posedge clk1) $display("%0t ns d1 value is 0x%0x",$time,d1); always@(posedge clk2) $display("%0t ns d1 value is 0x%0x",$time,d1);

a3:module裡面可以做的事情,9成以上的東西都可以在inte***ce裡面做。

**a4: ** 通常,將設計部分內容放置在module中(硬體實現),而將測試取樣部分放置在program中(軟體實現)。

基於uvm的驗證主要還是用inte***ce多一些,應當是關注的重點。

a5:package將不同的元件放到乙個容器裡,避免之後呼叫時,遇到類名/方法/例項重複等問題。在使用時,需要使用`include。

數字IC筆試題 全志科技數字前端

b 施密特觸發 c 方波 列出所有情況a 3 0 4 b0000 4 b1111即可 rst n為非同步復位,然後在每個clk上公升沿進行觸發器狀態更新 時鐘路徑 0.8ns 資料路徑 1 1.2 2.2 4.4ns 時鐘週期t 4ns 建立檢查 資料要求最晚到達時間為 0.8 4 tsu 4.2n...

跟sky學數字IC前端設計 數字IP FPGA實戰

1 培訓目標 培訓使用的fpga開發板 2塊 培訓demo效果 2 培訓內容設計 a 專案功能介紹 b 培訓課題設計 siliconthink提供整套fpga開發板 原始的vivado設計工程 demo可以跑起來 學員根據自身能力與興趣,自行決定自己需要設計哪個 或多個 ip block 然後自己進...

python學習隨筆2

優化 併發為什麼需要併發 什麼時候使用它 你可以使用最重要的併發模型 多執行緒 多程序 非同步程式設計 需要同時處理 在未處理完全的時候也需要保持響應 執行緒之間共享程式上下文,多執行緒並不會在單核處理器上加速,甚至會增加管理執行緒的開銷。同時由於多執行緒共享資料,因此就有了鎖機制來保護共享資料。g...