In CACE, how do I get logarithmic plots?
# chipalooza
c
In CACE, how do I get logarithmic plots?
t
Good question. . . I think I failed to implement that. It is, in fact, trivially easy to do, so let me make a quick test of it. Currently, a plot section of the spec can have a "type" record which is either "xyplot" or "histogram", where "xyplot" is the default if the "type" record is missing. I need to extend that to add, in addition to "xyplot" and "histogram", the additional types "semilogy", "semilogx", and "loglog" (which are the usual names in matlab/octave/matplotlib). I just need to call the correct plot type when plotting.
Yes, works like a charm. Let me go push that change to the repository. . .
🖨️ 1
c
Now that I'm finally taking specifications more seriously than design tool bugs, gm/Id vs. log Id would make a lot of sense for setting operating points. (That said, I notice that it's a huge pain for reference building block designers to get absolute reference voltages, and it's as huge a pain for me to convert a voltage back to bias currents to distribute … so I'm desiging for an input bias current instead of a voltage) Please also add the documentation … and I ended up using the cace package, not the source.
t
@Christoph Maier: Okay, cace has been updated. I think the package is rebuilt and distributed immediately.
c
@Tim Edwards, ok did a
python3 -m pip install --upgrade cace
Where, exactly, do I change what in the cace script?
Copy code
name:			gm_id_plot
	description:	Gate voltage vs. drain current
	display:		gm_Id vs. Id
	unit:			1/V
	simulate {
		tool:		ngspice
		template:	tb_nfet_01v8_gmtest.spice
		format:		ascii .data Id null null result
	}
	plot {
		type: semilogx
		filename: gm_over_Id_vs_Id.png
		xaxis: Id
		yaxis: result
	}
	variables {
		name: Id
		display: Drain current
		unit: A

		+
		name: result
		display: gm/Id
		unit: 1/V

	}
didn't work.
@Tim Edwards, it seems that the cace update broke plotting for an unrelated reason. cace-gui hangs now.
t
I will check, shortly. . .
c
How can I pip un-update?
t
Not sure. I'll need to check that, too. I had a problem with plots hanging, have not tracked it down other than that after bringing up a plot once I could not do a plot a 2nd time. The problem was in matplotlib but probably caused by conflicting library versions in python.
c
I seem to recall that Leo Moser eliminated a spurious dependency that made cace work for me. Maybe (probably …) you reintroduced that. In software world, everything has unintended side effects.
t
For reverting a pip package, apparently that's not directly possible, only uninstalling and reinstalling with a specific version number:
pip uninstall <package_name> && pip install <package_name>==<version_number>
As of this morning, the version was 2.1.11.
🙏 1
c
Thanks, reverted correctly, still hangs … maybe reboot.
t
Do you remember what it was that got CACE to work for you the first time (or point me to the conversation, which has gotten lost among a hundred different threads)?
c
Ping? https://open-source-silicon.slack.com/archives/C06K0B3V4RK/p1710528472324359?thread_ts=1710016391.509419&amp;cid=C06K0B3V4RK How do you get pip to install from local source, anyhow? Seems that something still hangs here … and I need to put something together that looks presentable for the deadline, anyhow. Maybe I need to run some noise and mismatch characterizations afterwards and drag out the design review slot as much as possible, but at least the topology if not the sizing should become recognizable. I wonder whether a relatively "simple" schematic (and I'm going to lose a lot of sleep to remind me how wrong I am), which is all about sizing transistors for noise and matching can really only be dimensioned and sized based on the schematic extracted from layout.