Archive for the Verilog Category

Note: Modelsim Examples 下的 “sc_vlog”

Posted in HDL, SystemC, Verilog on 2011 年 05 月 16 日 by Kun-Yi

它是一個透過 SystemC  ringbuf.h 去執行 Verilog module 的範例

ringbuf.h 內是宣告繼承所謂的 sc_foreign_module 來執行外部module, 這里是 ringbuf.v

在 run.do 可以看到先將所有 verilog 都compile 然後做 scgenmod -bool ringbuf > ringbuf.h 手動產生 foregin  module 的連結, 這裡的 ringbuf > ringbuf.h 是將 ringbuf 當成參數傳進 ringbuf.h, 這各參數這裡是當成 ringbuf.v 內的 hdl_name 接收, 然後compile test_ringbuf 之後, 去跑 simulation.

算是一個用SystemC寫Test bench 的範例

Note: ModelSim 的 PLI Example “traverse_design”

Posted in HDL, PLI, Verilog on 2011 年 05 月 16 日 by Kun-Yi

這個Example除了把 Modelsim 安裝好後, 還要看環境安裝對應的 compiler,  因為在XP 32bits上測試, 所以需要 “gcc-4.2.1-mingw32vc9”的package 解壓縮後(看 traverse_design.do會有一些提示), 放在安裝目錄即可. 另外 traverse_design.do 最後會直接離開Modelsim 需要comment最後指令

下面是執行過程, 主要是dump  pin/wire 的information.

do traverse_design.do
# Model Technology ModelSim SE vlog 10.0a Compiler 2011.02 Feb 20 2011
# — Compiling UDP multiplexer
# — Compiling UDP sudp
# — Compiling module dff
# — Compiling module top
#
# Top level modules:
#     top
# gcc -g -c -m32 -Wall -ansi -pedantic -I. -IC:/modeltech_10.0a/include  pli_test.c
# gcc -shared -lm -m32 -Wl,-Bsymbolic -Wl,-export-dynamic -o  pli_test.dll pli_test.o  -LC:/modeltech_10.0a/win32 -lmtipli
# vsim -c -pli ./pli_test.dll top
# ** Note: (vsim-3812) Design is being optimized…
# ** Note: (vsim-3865) Due to PLI being present, full design access is being specified.
# Loading ./pli_test.dll
# Loading work.top(fast)
# Loading work.dff(fast)
#
# ===========================
# Results of Design Traversal
# ===========================
#
# Module name is top.
#   Type           is accModule (20).
#   Full Type      is accTopModule (224).
#   Cell Instance  is FALSE.
#   Def Name       is top.
#   Delay Mode     is 0 (accDelayModeNone).
#   File           is top.v.
#   Line No        is 0.
#   Full Name      is top.
#   Time Precision is -9 (1 ns).
#   Time Unit      is -9 (1 ns).
#   Top Module     is TRUE.
#
#   Port name is ain.
#     Type          is accPort (35).
#     Full Type     is accVectorPort (256).
#     Direction     is accInout.
#     Port Index    is 0.
#     Line No       is 14.
#     File          is top.v.
#     Port Size     is Vector of 4 bits.
#     Parent        is top of type accTopModule.
#
#   Port Bit #1: ———-
#
#   Port name is ain[3].
#     Type          is accPortBit (214).
#     Full Type     is accPortBit (214).
#     Direction     is accInout.
#     Line No       is 14.
#     File          is top.v.
#     Port Size     is Scalar.
#     Parent        is top of type accTopModule.

Verilog Using $readmem or $readmemh in Modelsim

Posted in HDL, Verilog on 2006 年 02 月 28 日 by Kun-Yi
在 Model Sim 6.1b裡面 若是要讀一個檔案到記憶體里模擬
可以使用 $readmem or $readmemh
  • $readmem 為一個BIT的格式的讀檔函式
  • $readmemh 則為一個 HEX格式的的讀檔函式
使用方法為 $readmem(“filename",memory);
會讀進filename檔名的檔案,檔案格式則為
@xx YY
@xx 為記憶體定址使用HEX
YY 則為記憶體的內容依據 BIT/HEX 格式配置與實際記憶體大小
Example
memory 為 8BITS且使用 $readmem 則輸入檔案內容如下
@00   1100_0000  0101_1101
@02   0001_1000  1111_0000
使用 $readmemh 則為
@00   C0 5D
@02   18  F0
當為 16BITS 且使用 $readmemh 則輸入檔案內容如下
@00  AA55 CC11
@02  4E67  5A3C