From 3d99e11c8e2c432dc36a1b0d0a0ba0ee2875f488 Mon Sep 17 00:00:00 2001 From: Marcus Mellor Date: Mon, 23 Sep 2024 11:00:39 -0500 Subject: [PATCH] content/blog/papers/charlib: Update titles, add link to paper on IEEE --- content/blog/papers/charlib/_index.md | 7 ++----- content/blog/papers/charlib/background.md | 6 +++++- content/blog/papers/charlib/operation.md | 24 +++++++++++++++++------ 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/content/blog/papers/charlib/_index.md b/content/blog/papers/charlib/_index.md index 9731771..432bba1 100644 --- a/content/blog/papers/charlib/_index.md +++ b/content/blog/papers/charlib/_index.md @@ -1,5 +1,5 @@ --- -title: 'Laymanized | "CharLib: An Open Source Standard Cell Library Characterizer"' +title: 'Laymanized: "CharLib: An Open Source Standard Cell Library Characterizer"' date: 2024-08-07T14:16:52-05:00 categories: - laymanized @@ -42,7 +42,4 @@ CharLib is an open source project and can be found [here on GitHub](https://gith I wrote it over the course of about a year, building on ideas from several existing works and with lots of input from my advisor, Dr. James Stine. -You can find the paper in the proceedings of the 2024 IEEE Midwest Symposium on Circuits and Systems. - -> At the time of writing, the publication is not yet publicly available. I'll update this soon with -a link. +[You can find the paper here in the proceedings of the 2024 IEEE Midwest Symposium on Circuits and Systems.](https://ieeexplore.ieee.org/abstract/document/10658687) diff --git a/content/blog/papers/charlib/background.md b/content/blog/papers/charlib/background.md index 3b52fad..205559f 100644 --- a/content/blog/papers/charlib/background.md +++ b/content/blog/papers/charlib/background.md @@ -1,5 +1,5 @@ --- -title: 'Laymanized | CharLib Part 1: Background' +title: 'Part 1: Background' date: 2024-08-07T14:16:52-05:00 categories: - laymanized @@ -20,6 +20,10 @@ understand. +> *Feeling a bit lost?* This article is the first part in a series on the paper "Charlib: An Open +Source Standard Cell Library Characterizer". If you're looking for the other parts, or the paper +itself, [click here](..). + ### Some Assumptions ![xkcd when you assume](https://imgs.xkcd.com/comics/when_you_assume.png "I'm aware of the risk I'm taking here. | xkcd.com/1339") diff --git a/content/blog/papers/charlib/operation.md b/content/blog/papers/charlib/operation.md index 9d47287..0568ec4 100644 --- a/content/blog/papers/charlib/operation.md +++ b/content/blog/papers/charlib/operation.md @@ -1,14 +1,14 @@ --- -title: 'Laymanized | CharLib Part 2: How it Works' +title: 'Part 2: How it Works' date: 2024-08-07T14:16:52-05:00 draft: true math: true --- -Now that we understand standard cell characterization, we can dig into this paper. As it turns out, -understanding the background is the hard part here. +Now that we understand standard cell characterization, we can actually look at the paper. As it +turns out, understanding the background is the hardest part here. + -The paper is pretty straightforward after that. ## CharLib: An Open Source Standard Cell Library Characterizer @@ -33,6 +33,8 @@ script using Cadence Liberate's domain-specific commands. There are commands for data, defining paths through cells, defining test conditions, and much more. Learning all those commands takes time, and characterization has to be kicked off manually. +> TODO: concrete example of Cadence characterization script. + CharLib, instead, tries to automate the entire process. Cell information is treated like metadata, which can be stored with cell netlists or in a centralized configuration file for the whole cell library. Instead of configuring the tool every time you run characterization, you describe your @@ -51,11 +53,21 @@ of course. Those items are required to be documented on each cell. But everythin conditions like slew rates and capacitive loads - can be easily set once for the whole library. You can still override library defaults by specifying settings on a per-cell basis, of course. +> TODO: concrete example of charlib configuration file + +That's not to say that CharLib perfectly automates everything, of course. You still have to write +a config file for your cell library, and that means you'll still need all the same information that +would have gone into a script for a different tool. The difference is that instead of learning +commands specific to the tool, you're documenting your cell library in a way that CharLib knows how +to read. Since this is simple, descriptive information, there's no reason that other tools can't +use this information as well. Everyone benefits from documentation, but only a single tool can use +a script. + ### Section II: Nuts and Bolts When it comes to characterization itself, CharLib doesn't do anything new. It uses tried-and-true methods to characterize cells, leaning on the work of previous open-source characterizers such as -[libretto](https://search.ieice.org/bin/summary.php?id=e106-a_3_551) and +[libretto](https://github.com/snishizawa/libretto) and [lctime](https://codeberg.org/librecell/lctime). But just for fun, let's take a closer look at how it works. @@ -97,7 +109,7 @@ works for arbitrary combinational logic functions. Sequential cells are a little because of their internal state, but the same general principle applies. Here's a flowchart showing the full process. -![Test arc identification flowchart](test_arc_flowchart.svg "This is about as simple as it gets. This stuff is just plain difficult.") +![Test arc identification flowchart](../test_arc_flowchart.svg "This is about as simple as it gets. This stuff is just plain difficult.") Once we've figured out *how* to test our cell, we take a brief aside to measure cell capacitance.