Yodalee’s Note

My lifes, My notes

數位電路設計系列 - 晶片的物理架構

談到 APR 之前,我們先來說一下晶片內部的物理架構,pad、鎊線、memory、power ring、power strip 等, 讓大家對平常看到的晶片有個認識,後面實際操作軟體的寫文章才好寫。

...

影評:帝國浩劫-美國內戰

still

總評:

7/10

浪費時間
看看就好
值得一看
非看不可

...

 May 19, 2024 |    MovieReview  |     | 1 分鐘  |  YodaLee

數位電路設計系列 - 下線流程概述

接續我們上一篇的前言 ,今天我們就先來看看整個下線流程概述, 這篇文的目標是讓大家對下線流程有一定的了解,後面的文章才好懂。
本來計劃是前言打完就趕快發這篇,但我想在 11 月下線的晶片回來,確定下線成功符合當初設計再來繼寫後面的文, 這樣底氣才夠講話才能大聲……沒錯一定是這樣,絕對不是我下班之後回家都在耍廢的關係。

...

和平的代價:貨幣、民主與凱因斯的一生

書名 和平的代價:貨幣、民主與凱因斯的一生
原書名 The Price of Peace: Money, Democracy, and the Life of John Maynard Keynes
作者 Zachary D. Carter
譯者 賴盈滿
出版商 春山出版
出版日 2022-11-22
ISBN 9786267236024
...

NTT 究竟是什麼?

故事是這樣子的,最近工作之餘頻繁地遇到 NTT 這個東西,但這個東西不是很好懂,所以想說來筆記一下, 順便用一個簡單的例子來說明 NTT/INTT 的流程與結果。

簡而言之呢,NTT 就是 Nippon Telegraph and Telephone 日本電信電話…欸不是這個 NTT ,這邊要講的是 number-theoretic transform,中文是翻數論轉換。
可以把它看成離散傅立葉轉換 DFT 的一個通用的形式,把一個數或一個多項式分解成多個選定的因子的向量; 反向的 Inverse NTT 則可以反過來從分解開來的向量再轉回去本來的元素。
為什麼要用 NTT 呢?
就像傅立葉轉換把時域的訊號轉到頻域上,讓時域的 convolution 轉成頻域直接相乘; 本來 Finite field 的 convolution ,在 NTT 轉換後可以變直接乘,對整數或多項式的乘法來說很有用。

...

 November 19, 2023 |    math  |    python  | 6 分鐘  |  YodaLee

數位電路設計系列 - 前言

故事是這樣子的,在睽違多年之後,最近又回頭去摸了數位電路設計與 tapeout,一個我已經疏遠許久的領域,在 11/13 的時候, 以壓線之姿送出人生第一顆數位電路晶片,寫這篇序文用來記錄未來相關的發文。

...

第二次教召就上手

故事是這樣子的,自從四年前寫了第一次教召就上手 , 依照兩年一召的頻率,隨後在 2021 年六月本來要二召,但因為武漢肺炎本島爆發就全部取消,但該來的逃不過, 今年第三召,因為跟第一次召訓的差別有點大,值得再寫一篇來討論。

...

 September 22, 2023 |    LifeRecord  |    army  | 1 分鐘  |  YodaLee

用 verilator 輔助數位電路設計:後記

這次開發 RSA 256 ,整體來說我覺得比 2010 年那時候順多了。
2010 年因為第一次接觸 verilog 和 FPGA,在兩個月內要衝出 RSA 256,自然也不會懂什麼 valid/ready, 現在回去看介面都是用 start 配 ready,相當於只有 i_valid 跟 o_valid,除此之外都是簡單暴力的狀態機, 放一下那時候報告畫的 state diagram 給大家笑一下,根本大雜燴什麼都攪在一起。

...

用 verilator 輔助數位電路設計:SystemVerilog

上一回設定好 testbench 之後,終於可以來寫 verilog 了,這回就來看看我們怎麼用我們這套 Testbench, 搭配 verilog 的 pipeline 設計來實作 RSA256。

...

用 verilator 輔助數位電路設計:Verilator Framework

準備好 C model 和 SystemC 之後,我們的主角 verilator 終於帥氣登場啦。

verilator 會做什麼呢?它的使用流程是這樣子的,它會先分析你寫的 verilog/system verilog 檔案, 然後把它轉成一個 C++ 的標頭檔與實作,裡面的 class 會模擬你寫的 verilog 的行為。
接著你寫另一個 C++ 程式,初始化 verilator 產生出來的 class,餵它 clock 和其他你想要測試的信號, 就能模擬 verilog module 在接收這些信號時的行為,詳細的使用方式,一樣請參考強者我同學 johnjohnlin 的 blog

...