Hayashi's Blog
External icon
Yodalee's Blog
About
Series
  • Hello Verilator—高品質&開源的 SystemVerilog(Verilog) 模擬器介紹&教學(三)

    Jan 2, 2021 c++ verilator verilog systemverilog systemc

    在前面一篇文章中分享了作者如何使用 verilator 以及 C++ 來模擬一個用 SystemVerilog 模組,在這篇文章中,將會分享另外一種方法,也就是用 verilator 以及 SystemC 來達成同樣的事情。

    [系列文連結在此]

    Read More
  • Hello Verilator—高品質&開源的 SystemVerilog(Verilog) 模擬器介紹&教學(二)

    Dec 29, 2020 c++ verilator verilog systemverilog

    在前面一篇文章中分享了作者使用 verilator 來模擬數位 IC 的經驗。Verilator 具有對新語法的支援度、相當好的可靠度,速度甚至在商用工具之上,這篇文章將會用個簡單的案例分享 verilator 的用法。

    [系列文連結在此]

    Read More
  • Hello Verilator—高品質&開源的 SystemVerilog(Verilog) 模擬器介紹&教學(一)

    Dec 28, 2020 c++ verilator verilog systemverilog

    台灣的 CIC 免費提供學界許多昂貴的 EDA tool,在這個影響下,講到 SystemVerilog(Verilog) 模擬器(太長了,下面簡稱模擬器),多數人第一個想到的都是經典的 Cadence 的 ncsim,或是 Synopsys 的 vcs。說到免費的模擬器,有些人可能聽過 iverilog 這個知名的替代品,然而受到實做上的限制,iverilog 的效能基本上無法作為 production 使用。於是我打算用幾篇文章來介紹近年來興起的 verilator,他是一個優秀的模擬器替代品,我自己的使用經驗中,效能甚至可以超越商用昂貴的模擬器。

    [系列文連結在此]

    Read More
  • 從一個 C++ class 自動生成另外一個 adaptor class(二)

    Dec 13, 2020 c++ template adaptor pattern

    程式設計師常常會用到 code generator,code generator 可以只根據簡短的描述,自動產生出具有許多額外功能的 class 程式碼。上一篇中提到了,程式設計師有時會想要替生成程式中的 class 的,加入新的功能,這時 adaptor pattern 就很好用了。

    [系列文連結在此]

    Read More
  • 從一個 C++ class 自動生成另外一個 adaptor class

    Dec 5, 2020 c++ template adaptor pattern

    程式設計師常常會用到 code generator,code generator 可以只根據簡短的描述,自動產生出具有許多額外功能的 class 程式碼。舉筆者常用的 code generator 為例,protobuf 可以自動生成「把 JSON 解析成 C++ 中的 STL 物件」的 class(object serialization);verilator 可以把 Verilog 轉換成「可以用 C++/SystemC 進行模擬」的 class。

    [系列文連結在此]

    Read More
  • C++ string 的兩種實做

    Nov 8, 2020 c++ stl string

    最近在玩一些比較老舊的程式碼的時候,發現 g++ 5 前後的 sizeof(std::string) 的大小有相當大的差異,在 64-bit 平台下,有 g++ 5 之前是 8 bytes,之後是 32 bytes。這其中的差異蠻有趣的,尤其是舊版的 string 只要一個 pointer 的大小,於是就找了一下資料並記錄下來。

    Read More
  • C++ smart pointer 之速度之討論(二)

    Oct 25, 2020 c++ pointer

    在系列的上一篇中,提到了如何使用 shared_ptr 才能增加程式中「函數間互相傳資料」的速度。然而首先,C++ 的 shared_ptr 是 thread-safe 的,有時候我的程式並不需要 thread-safety,但為了維持這個性質可能會產生不少 overhead。其次,前文中使用 shared_ptr 時每次放資料都要自己 push/pop,寫起來也不是很乾淨。有沒有可能自己寫一個簡單的 shared_ptr 來增加效率以及增加使用時的方便性呢?

    [系列文連結在此]

    Read More
  • C++ smart pointer 之速度之討論(一)

    Oct 6, 2020 c++ pointer

    在 C++11 中,引入了 unique_ptr 以及 shared_ptr 兩種新的 smart pointer 來取代 C++03 很難用的 auto_ptr。網路上有許多文章在討論 auto_ptr 的缺點,這不在本的討論範圍內,基本的 unique_ptr 功能也不在本文的討論範圍。本文中,我將會用一個例子,討論如何使用這兩種 smart pointer 才能增進程式運行速度。

    [系列文連結在此]

    Read More
  • 現代編譯器優化竟然可以作國中等級的代數運算?

    Sep 24, 2020 c++ compiler

    這篇是我 2018 年在 stackoverflow 發的問題,當時在 stackoverflow 上也有不少討論,也讓我賺了不少 stackoverflow 點數,最近有機會重新整理一下這篇文章,寫在自己的網站上。

    Read More
  • 用 C++ 測試記憶體延遲

    Sep 21, 2020 c++ data structure computer architecture

    許多的 benchmark 工具 (e.g., geekbench v4, aida64) 都具有測量記憶體延遲的功能,有些甚至還能測試快取的延遲。 於是我就很好奇,到底這些工具是怎麼定義記憶體延遲的呢? 進一步說,有可能用簡單的 C++ 程式就重現出這些工具的測量結果嗎?

    Read More

Hayashi's Blog

Ahoy! 平凡無奇的工程師部落格 peko
Read More

Featured Posts

  • 在 Xilinx SoC 上放上自己的 IP(一)
  • 從一開始的 Xilinx SoC 開發,PetaLinux 使用(一)
  • 從零開始的 Xilinx SoC 開發(五)
  • 從零開始的 Xilinx SoC 開發(一)
  • 來開發 Visual Studio Code SystemVerilog plugin 吧!開發紀錄(四)
  • 來開發 Visual Studio Code SystemVerilog plugin 吧!開發紀錄(三)
  • 來開發 Visual Studio Code SystemVerilog plugin 吧!開發紀錄(二)
  • 來開發 Visual Studio Code SystemVerilog plugin 吧!開發紀錄(一)
  • SystemVerilog 中的 universal verfication methodology (UVM) 是什麼(二)
  • SystemVerilog 中的 universal verfication methodology (UVM) 是什麼(一)
  • Systemverilog interface/modport 簡介&使用方法
  • Hello Verilator—高品質&開源的 SystemVerilog(Verilog) 模擬器介紹&教學(三)
  • Hello Verilator—高品質&開源的 SystemVerilog(Verilog) 模擬器介紹&教學(二)
  • Hello Verilator—高品質&開源的 SystemVerilog(Verilog) 模擬器介紹&教學(一)
  • 從一個 C++ class 自動生成另外一個 adaptor class(二)
  • 從一個 C++ class 自動生成另外一個 adaptor class
  • 將 N 個球隨機放入 M 個桶子的數學問題
  • C++ smart pointer 之速度之討論(二)
  • C++ smart pointer 之速度之討論(一)
  • DRAM 的運作 (Computer Architecture 側)(二)
  • 現代編譯器優化竟然可以作國中等級的代數運算?
  • 用 C++ 測試記憶體延遲
  • 整數定數除法的代換 (constant integer division)
  • DRAM 的運作 (Computer Architecture 側)

Recent Posts

  • 在 Xilinx SoC 上放上自己的 IP(三)
  • 在 Xilinx SoC 上放上自己的 IP(二)
  • 從一開始的 Xilinx SoC 開發,PetaLinux 使用(三)
  • 在 Xilinx SoC 上放上自己的 IP(一)
  • 從一開始的 Xilinx SoC 開發,PetaLinux 使用(二)
  • 從一開始的 Xilinx SoC 開發,PetaLinux 使用(一)
  • 從零開始的 Xilinx SoC 開發(五)
  • 從零開始的 Xilinx SoC 開發(四)

categories

TECHNICAL 34 TOOL 18 ARCHITECTURE 3 PERFORMANCE 3 MATH 2 GAME 1 SYNTAX 1 THEMES 1

series

從零開始的-XILINX-SOC-開發 5 開發-VISUAL-STUDIO-CODE-SYSTEMVERILOG-PLUGIN 4 HELLO-VERILATOR-系列 3 在-XILINX-SOC-上放上自己的-IP 3 從一開始的-XILINX-SOC-開發PETALINUX-使用 3 DRAM-的運作 2 SMART-POINTER-速度 2 自動-CLASS-生成 2 FACTORIO-介紹 1

tags

XILINX 12 C++ 10 VIVADO 8 SYSTEMVERILOG 6 VERILOG 5 VSCODE 4 COMPUTER-ARCHITECTURE 3 PETALINUX 3 VERILATOR 3 ADAPTOR-PATTERN 2
All tags
ADAPTOR-PATTERN2 BINOMIAL1 C++10 COMPILER2 COMPUTER-ARCHITECTURE3 CSS1 DATA-STRUCTURE1 FACTORIO1 FEATURED1 HTML1 MAKEFILE1 MARKDOWN1 MULTINOMIAL1 PETALINUX3 POINTER2 STL1 STRING1 SYSTEMC2 SYSTEMVERILOG6 TEMPLATE2 THEMES1 UVM2 VERILATOR3 VERILOG5 VIM1 VIVADO8 VSCODE4 XILINX12
[A~Z][0~9]

2022 HAYASHI'S BLOG. (CC BY-NC-SA)