1、Quartus 教 學 進 階 功 能 LogicLock 更 新 日 期 : 08/28/2009 08:06:13 1. 基 本 觀 念 2. 使 用 限 制 3. 以 QuartusII 在 設 計 流 程 中 引 入 LogicLock 功 能 3-1 Set “Incremental Compilation“ at the first 3-2 Setting “Design Partition“ for synthesis and fitting 3-3 “Create New LogicLock Region“以 配 置 這 些 sub-module 3-4 設 定 LogicLo
2、ck Region 的 位 置 與 大 小 , 並 指 定 partition 區 域 的 顏 色 3-5 Incremental Compilation Advisor and RTL Viewer 3-6 Compilation, then check Timing Report and Chip Planner 3-7 Back-Annotate 一 、 基 本 觀 念 LogicLock 是 QuartusII 1.1 之 後 新 增 的 功 能 , 最 早 的 概 念 是 : 讓 使 用 者 每 次 修 改 、最 佳 化 整 個 專 案 (project)的 一 部 份 時 , 該
3、部 份 在 接 下 來 與 其 他 電 路 整 合 的 過 程 中 ,透 過 第 一 次 最 佳 化 時 已 將 電 路 的 擺 放 位 置 、 nodes 間 相 對 關 係 固 定 , 以 維 持 原 先 子模 組 (sub-module)特 性 在 與 電 路 合 併 後 不 受 影 響 , 故 不 需 要 再 對 整 個 電 路 (top-level project)重 做 一 次 最 佳 化 。 傳 統 設 計 流 程 與 LogicLock 設 計 流 程 差 別 如 下 圖 所 示 : 後 來 QuartusII 再 引 入 “Incremental Compilation“與
4、“Design Partition“的 觀 念 ,配 合 LogicLock Region 形 成 了 完 整 一 套 觀 念 描 述 邏 輯 。 它 可 以 實 現 Top-down design flow 或 Bottom-up design flow, 本 文 將 以 Top-down design flow 為 例說 明 。 LogicLock 不 只 可 以 保 存 子 模 組 的 電 路 特 性 , 改 善 模 組 最 佳 化 設 計 的 效 率 , 此 技 術 運用 得 當 , 還 可 提 升 整 個 電 路 的 performance; 比 方 說 , 可 以 把 功 能 相
5、關 的 電 路 盡 量集 中 在 同 一 個 區 域 (region)裡 、 將 電 路 擺 在 離 指 定 的 接 腳 距 離 較 近 或 對 稱 的 地 方 。相 反 的 , 若 運 用 不 當 -比 方 LogicLock region 設 的 太 小 , 或 擺 放 的 位 置 離 其 I/O pins 太 遠 , LogicLock region 彼 此 放 的 太 散 , 反 而 導 致 繞 線 後 performance 變 差的 情 況 也 是 很 常 見 。 不 只 能 對 module 或 entity, 也 可 以 對 nodes 做 LogicLock 二 、 使 用
6、限 制 QuartusII 對 以 下 系 列 的 產 品 支 援 LogicLock 功 能 Stratix、 Stratix GX、 StratixII、 StratixII GX、 StratixIII、 StratixIII GX CycloneTM、 CycloneII、 CycloneIII APEX20K、 APEX20KE、 APEX20KC and APEXTM II devices MAXII 三 、 以 QuartusII 在 設 計 流 程 中 引 入 LogicLock 功 能 3-1 Set “Incremental Compilation“ at the firs
7、t 以 階 層 設 計 觀 念 , 先 將 整 個 電 路 劃 分 成 數 個 sub-module 設 計 , 並 且 在Compilation Process Settings 中 , 需 要 先 設 定 Full Incremental Compilation (default)。 3-2 Setting “Design Partition“ for synthesis and fitting 一 但 定 義 partition 後 , compile 就 可 以 針 對 個 別 的 partition 處 理 , “設 定 “只 有被 修 改 的 partition 重 新 compi
8、le, 沒 修 改 的 partition 則 會 保 留 前 一 次 的compile 結 果 , 如 此 就 可 大 幅 降 低 compilation time。 如 果 一 個 新 的 project(未 compile 過 ), 沒 有 顯 示 樹 狀 結 構 關 係 , 可 以 執 行“Start Analysis & Elaboration“, 就 會 跑 出 狀 狀 結 構 關 係 , 不 需 要 整 個 project全 部 compilation 3-3 “Create New LogicLock Region“以 配 置 這 些 sub-module 此 時 若 打 開
9、“Chip Planner“, 可 以 看 到 QuartusII 自 動 配 置 的 LogicLock region 所 在 位 置 3-4 Assignments LogicLock Regions Window (ALT+L) LogicLock Regions Window 內 選 定 entity, 按 滑 鼠 右 鍵 選 擇 快 捷 選 項“Properties“, 可 以 設 定 LogicLock Region 的 位 置 與 大 小 , 一 開 始 我 們 先 設 定 :Size=Auto、 位 置 =floating Assignments Design Partitio
10、ns Window (ALT+D) 打 開 檢 視 剛 剛 的設 定 , 並 指 定 partition 區 域 的 顏 色 “Netlist Type“預 設 是 “Post-Synthesis“, 表 示 只 保 留 前 一 次 Synthesis 結 果 ,fitter 會 重 做 。 如 果 這 個 project 是 已 經 compile 過 的 , 我 們 想 針 對 某 個 修 改 的 entity 重 新compile, 而 其 他 的 entity 保 持 不 變 , 那 就 把 不 變 design entity 的 “Netlist Type“設 “Post-fit“
11、and “Fitter Preservation Level“設 “Placement and Routing“ (保 留 等 級 最 高 最 完 整 )也 可 以 從 Design Partitions Window 指 定 partition: 先 在 Project Navigate 選 定 design entity, 然 後 在 Design Partitions Window 按 “以 指 定 partition 3-5 Incremental Compilation Advisor and RTL Viewer Tools Advisors Incremental Compila
12、tion Advisor 可 幫 檢 查 design 式 否 符 合 incremental compilation rules Tools Netlist Viewers RTL Viewer: 可 以 從 RTL Viewer 中 看 出 每 個 entity 的 相 互 關 係 , 以 決 定 which entities to make the best partition。 以 本 例 而 言 , 目 前 partition 的 每 個 entity 下 , 沒 有彼 此 獨 立 的 sub-entity 了 , 所 以 這 樣 的 partition 是 好 的 。 click
13、entity 符 號 , 可 以 進 一 步 顯 示 其 電 路 架 構 , 以 “taps:inst“為 例 Floorplan Assignment Guidelines 1. 如 果 允 許 Fitter 自 動 擺 放 LogicLock Region 位 置 , region size 留 大 一 點 , 以 保 有 調 整 設 計 的 空 間 2. 如 果 要 調 整 LogicLock Region 擺 放 位 置 , 維 持 原 Fitter 所配 置 的 相 對 位 置 關 係 3. 若 entity 有 用 到 RAM/DSP Block, 那 所 指 定 的 LogicL
14、ock Region 也 必 須 包 含 RAM/DSP Block 4. 避 免 overlapping region 3-6 Compilation, then check Timing Report and Chip Planner 設 定 LogicLock Region 後 , 反 而 fmax 從 134MHz 下 降 到 123MHz, 變 差 了 。 我 們 打開 “Chip Planner“來 研 究 一 下 變 差 的 原 因 。 若 project 的 design 很 小 , 設 Partition+LogicLock region 反 而performance 變 差
15、 的 情 況 , 還 蠻 常 見 的 下 圖 示 QuartusII 自 動 擺 放 LogicLock 的 結 果 , 位 置 很 分 散 , 所 以 timing performance 很 差 。 可 能 是 因 為 這 個 例 子 的 design 太 小 了 , 整 個 佈 局 空 間 很 空 , 所以 設 定 Partition 與 LogicLock region 後 , 反 而 讓 LEs 放 的 不 集 中 。 左 下 角 那 一 塊 虛 線 框 起 來 的 區 域 , 並 不 是 LogicLock region(我 們 只 設 了 四 個LogicLock region)
16、, 而 是 讓 我 們 可 以 在 “Chip Planner“直 接 拖 曳 更 改 LogicLock region 區 域 位 置 的 功 能 。 3-6-1 當 我 們 把 滑 鼠 游 標 移 到 該 虛 線 框 區 域 時 , 游 標 會 變 成 十 字 箭 頭 符 號 , 此 時 按 滑鼠 右 鍵 , 會 出 現 一 個 選 擇 LogicLock region 的 對 話 視 窗 , 若 我 現 在 選 擇 “tap“ entity, 表 示 我 們 可 以 從 此 方 框 拉 出 一 個 虛 線 區 域 擺 放 到 我 們 希 望 的 任 意 指 定 位 置 ,它 是 用 來
17、放 “tap“ entity 的 LogicLock region, 當 然 這 區 域 的 大 小 或 長 寬 形 狀 我 們也 可 以 用 游 標 拖 曳 調 整 。 3-6-2 把 整 個 project 所 有 entity 的 LogicLock Region, 集 中 放 在 一 起 3-6-3 進 LogicLock Regions Window, 選 定 entity 按 右 鍵 設 定 “Property“, 把 原本 “Auto“的 設 定 關 掉 , 這 樣 LogicLock region 才 會 自 動 抓 到 我 們 所 指 定 的 位 置 再 重 新 compil
18、e 一 次 , fmax=113MHz, 是 有 好 一 點 , 但 還 是 比 不 做Partition+LogicLock 來 的 差 很 多 。 因 為 此 design 中 有 用 到 DSP Block, 把 所 有 的 IO 指 定 到 Bank4, 所 有 LogicLock Region 放 到 中 間 偏 下 方 區 域 , 使 得 LEs 既 可 靠 近 IO, 又 可 靠 近 DSP Block, 再 重新 compile 一 次 , fmax=121MHz, 更 好 一 點 , 但 還 是 不 及 不 做 partition 的 設 定 可達 134MHz。 3-7 Back-Annotate Assignments Back-Annotate Assignments MegaWizard | SignalTap | LogicLock | SignalProbe