Hayashi's Blog
External icon
Yodalee's Blog
About
Series
  • Boost hana

    Dec 29, 2022 c++ boost hana template

    最近因為各種原因發現了 boost hana 這個 library,haha 是 boost 一個 meta programming 的 library。Hana 運用了 C++14 的功能,具有相當優秀的編譯期速度,且編寫起來相對直觀,甚至可以有 macro 把對 struct 的每個物件做 iteration,非常的強大。這系列的文章將會包含 hana 設計的發想來源、一些使用方式以及如何對 struct 的每個物件做 iteration。

    [系列文連結在此]

    Read More
  • 如何簡單地用 Boost Coroutine 做出 Python yield

    Aug 4, 2022 c++ boost

    在 Python 中,有 yield 這個關鍵字,讓我們把一個函數輕易的改寫成中間可以中斷執行的版本。在 C++ 中,C++20 以及 boost 也能透過 coroutine 來達成 yield 的效果。考量到 C++20 的支援可能尚未普及,我將會試著用 boost coroutine 來在盡量不改動原本 code 的情形下,模仿 Python 的 yield。

    Read More
  • 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
    • ««
    • «
    • 1
    • 2
    • »
    • »»

Hayashi's Blog

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

Featured Posts

  • Systemverilog interface/modport 簡介&使用方法 (6 years after)
  • 在 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

  • Boost hana
  • Systemverilog interface/modport 簡介&使用方法 (6 years after)
  • 如何簡單地用 Boost Coroutine 做出 Python yield
  • 在 Xilinx SoC 上放上自己的 IP(三)
  • 在 Xilinx SoC 上放上自己的 IP(二)
  • 從一開始的 Xilinx SoC 開發,PetaLinux 使用(三)
  • 在 Xilinx SoC 上放上自己的 IP(一)
  • 從一開始的 Xilinx SoC 開發,PetaLinux 使用(二)

categories

TECHNICAL 36 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 BOOSTHANA 1 FACTORIO-介紹 1

tags

C++ 12 XILINX 12 VIVADO 8 SYSTEMVERILOG 7 VERILOG 6 VSCODE 4 COMPUTER-ARCHITECTURE 3 PETALINUX 3 TEMPLATE 3 VERILATOR 3
All tags
ADAPTOR-PATTERN2 BINOMIAL1 BOOST2 C++12 COMPILER2 COMPUTER-ARCHITECTURE3 CSS1 DATA-STRUCTURE1 FACTORIO1 FEATURED1 HANA1 HTML1 MAKEFILE1 MARKDOWN1 MULTINOMIAL1 PETALINUX3 POINTER2 STL1 STRING1 SYSTEMC2 SYSTEMVERILOG7 TEMPLATE3 THEMES1 UVM2 VERILATOR3 VERILOG6 VIM1 VIVADO8 VSCODE4 XILINX12
[A~Z][0~9]

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