ICE51 IP核模拟记录

上文提到了51内核ICE51(https://github.com/ashleyjr/ice51.git

本文就来看看怎么编译C程序,仿真模拟运行在该IP软核上:

环境:MingW32、iverilog、yosys、arachne-pnr、icestorm(icetime)等

 

软核布线:(synth脚本)

#!/bin/bash
echo "========================================================"
echo "Running synth..."
rm -f syn.log
yosys -p 'synth_ice40 -top ice51_top -blif ice51.blif' rtl/ice51_top.v rtl/ice51.v rtl/mem_512x8b.v > syn.log
cat syn.log | grep -A20 statistics
echo "========================================================"
echo "Running place and route..."
rm -f blif.log
yosys -o ice51.syn.v ice51.blif > blif.log
arachne-pnr -d 5k -w etc/ice51.pcf ice51.blif -o ice51.asc 
echo "========================================================"
echo "Running Timing check..."
icetime -tmd hx1k ice51.asc > ice51.time
cat ice51.time | grep -A20 "Total path delay"

编译仿真:(run脚本)

#!/bin/bash
CMD="cd verif/src"
echo $CMD
$CMD

CMD="make"
echo $CMD
$CMD

CMD="cd ../.."
echo $CMD
$CMD

PRELOAD="preload"
if [[ "$2" == "$PRELOAD" ]]; then
   P_PRELOAD=" -D PRELOAD"
fi

#
#./run all preload
#
# Run all tests add check for pass fail
ALL="all"
if [[ "$1" == "$ALL" ]]; then
   echo ""
   echo "--- Simulation begins ---"
   for filename in verif/src/*.c; do
      echo $filename 
      echo -n -e " >\t\t\t"
      ext=".hex"
      cp -f ${filename/\.c/$ext} load_mem.hex
      ext=".checks"
      cp -f ${filename/\.c/$ext} checks.hex
      iverilog -o ice51.dat -D SIM $P_PRELOAD -c etc/filelist.txt
      vvp ice51.dat -vcd | grep "PASSED\|ERROR" 
   done
   echo "--- Simulation ends ---"
   exit
fi

# Run a single test
ext=".hex"
CMD="cp -f verif/src/${1/\.c/}$ext load_mem.hex"
echo $CMD
$CMD

ext=".checks"
CMD="cp -f verif/src/${1/\.c/}$ext checks.hex"
echo $CMD
$CMD

CMD="iverilog -o ice51.dat -D SIM $P_PRELOAD -c etc/filelist.txt"
echo $CMD
$CMD

CMD="vvp ice51.dat -vcd > /dev/null 2>&1"
echo $CMD
$CMD 

# Load waves for a single test
WAVES="w"
if [ "$2" == "$WAVES" ] || [ "$3" == "$WAVES" ]; then
   CMD="gtkwave -S etc/signals.tcl ice51.vcd"
   echo $CMD
   $CMD
fi

准备好环境,分别执行1、synth 2、run

仿真结果如下:

运行仿真结果:

一个CPU就制作出来了,神奇不?

 

记住,山外有山,很多时候,不是自己笨,而是自己的眼界没有被打开!!!

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
开源IP核I2C仿真是通过使用开源软件和硬件进行I2C协议的仿真模拟。I2C(Inter-Integrated Circuit)是一种串行通信协议,常用于各种电子设备之间的通信。开源IP核是指基于开源许可的可重用的硬件模块,可以在FPGA(Field-Programmable Gate Array)等可编程逻辑器件中使用。通过仿真模拟,我们可以验证I2C通信的正确性、稳定性和性能。 为了进行开源IP核I2C仿真,我们可以使用一些开源软件和硬件平台。例如,我们可以使用Verilog或VHDL这样的硬件描述语言编写开源的IP核代码,并使用开源的EDA(Electronic Design Automation)软件,如Yosys、Icarus Verilog和GTKWave进行仿真和波形分析。 在仿真过程中,我们可以模拟各种I2C设备的通信场景,包括主设备和从设备之间的数据传输和控制。我们可以设置时钟频率、数据帧大小、地址和传输模式等参数,以验证IP核的功能和性能是否符合规范。 另外,我们还可以使用开源硬件平台来验证IP核的功能。例如,我们可以将IP核代码加载到开源FPGA板上,如Lattice ICE40或Xilinx Spartan系列,然后在硬件级别模拟I2C通信。这样可以更加真实地模拟I2C设备之间的通信,同时也可以验证IP核在实际硬件环境中的正确性和稳定性。 总的来说,开源IP核I2C仿真是一种使用开源软件和硬件进行I2C通信模拟和验证的方法,可以帮助我们更好地理解和优化I2C通信,提高系统的可靠性和性能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值