blob: 16353733cb103f929ddadcfced704c558334d358 [file] [log] [blame]
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Layout Solution\n",
"The following cell contains the layout solution for the two-stage amplifier. LVS should pass when you evaluate it."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"creating BagProject\n",
"computing layout\n",
"ext_w0 = 1, ext_wend=1, ytop=2592\n",
"final: ext_w0 = 1, ext_wend=1, ytop=2592\n",
"{'s': WireArray(TrackID(layer=3, track=7, num=9, pitch=2), 1109, 1265, 0.001), 'd': WireArray(TrackID(layer=3, track=8, num=8, pitch=2), 1231, 1387, 0.001), 'g': WireArray(TrackID(layer=3, track=8, num=8, pitch=2), 915, 1071, 0.001)}\n",
"WireArray(TrackID(layer=3, track=8, num=8, pitch=2), 915, 1071, 0.001)\n",
"6.5\n",
"ext_w0 = 1, ext_wend=7, ytop=2880\n",
"ext_w0 = 2, ext_wend=9, ytop=3024\n",
"final: ext_w0 = 1, ext_wend=7, ytop=2880\n",
"creating layout\n",
"layout done\n",
"computing AMP_CHAIN schematics\n",
"creating AMP_CHAIN schematics\n",
"running lvs\n",
"Running tasks, Press Ctrl-C to cancel.\n",
"lvs passed\n",
"lvs log is /users/erichang/projects/bag_gen/BAG2_cds_ff_mpt/pvs_run/lvs_run_dir/DEMO_AMP_CHAIN/AMP_CHAIN/lvsLog_20180906_112850xbhqztn3\n",
"LVS flow done\n"
]
}
],
"source": [
"from bag.layout.routing import TrackID\n",
"from bag.layout.template import TemplateBase\n",
"\n",
"from xbase_demo.demo_layout.core import AmpCS, AmpSFSoln\n",
"\n",
"\n",
"class AmpChain(TemplateBase):\n",
" def __init__(self, temp_db, lib_name, params, used_names, **kwargs):\n",
" TemplateBase.__init__(self, temp_db, lib_name, params, used_names, **kwargs)\n",
" self._sch_params = None\n",
"\n",
" @property\n",
" def sch_params(self):\n",
" return self._sch_params\n",
"\n",
" @classmethod\n",
" def get_params_info(cls):\n",
" return dict(\n",
" cs_params='common source amplifier parameters.',\n",
" sf_params='source follower parameters.',\n",
" show_pins='True to draw pin geometries.',\n",
" )\n",
"\n",
" def draw_layout(self):\n",
" \"\"\"Draw the layout of a transistor for characterization.\n",
" \"\"\"\n",
"\n",
" cs_params = self.params['cs_params'].copy()\n",
" sf_params = self.params['sf_params'].copy()\n",
" show_pins = self.params['show_pins']\n",
"\n",
" cs_params['show_pins'] = False\n",
" sf_params['show_pins'] = False\n",
"\n",
" # create layout masters for subcells we will add later\n",
" cs_master = self.new_template(params=cs_params, temp_cls=AmpCS)\n",
" sf_master = self.new_template(params=sf_params, temp_cls=AmpSFSoln)\n",
"\n",
" # add subcell instances\n",
" cs_inst = self.add_instance(cs_master, 'XCS')\n",
" # add source follower to the right of common source\n",
" x0 = cs_inst.bound_box.right_unit\n",
" sf_inst = self.add_instance(sf_master, 'XSF', loc=(x0, 0), unit_mode=True)\n",
"\n",
" # get VSS wires from AmpCS/AmpSF\n",
" cs_vss_warr = cs_inst.get_all_port_pins('VSS')[0]\n",
" sf_vss_warrs = sf_inst.get_all_port_pins('VSS')\n",
" # only connect bottom VSS wire of source follower\n",
" if len(sf_vss_warrs) < 2 or sf_vss_warrs[0].track_id.base_index < sf_vss_warrs[1].track_id.base_index:\n",
" sf_vss_warr = sf_vss_warrs[0]\n",
" else:\n",
" sf_vss_warr = sf_vss_warrs[1]\n",
"\n",
" # connect VSS of the two blocks together\n",
" vss = self.connect_wires([cs_vss_warr, sf_vss_warr])[0]\n",
"\n",
" # get layer IDs from VSS wire\n",
" hm_layer = vss.layer_id\n",
" vm_layer = hm_layer + 1\n",
" top_layer = vm_layer + 1\n",
"\n",
" # calculate template size\n",
" tot_box = cs_inst.bound_box.merge(sf_inst.bound_box)\n",
" self.set_size_from_bound_box(top_layer, tot_box, round_up=True)\n",
"\n",
" # get subcell ports as WireArrays so we can connect them\n",
" vmid0 = cs_inst.get_all_port_pins('vout')[0]\n",
" vmid1 = sf_inst.get_all_port_pins('vin')[0]\n",
" vdd0 = cs_inst.get_all_port_pins('VDD')[0]\n",
" vdd1 = sf_inst.get_all_port_pins('VDD')[0]\n",
"\n",
" # get vertical VDD TrackIDs\n",
" vdd0_tid = TrackID(vm_layer, self.grid.coord_to_nearest_track(vm_layer, vdd0.middle))\n",
" vdd1_tid = TrackID(vm_layer, self.grid.coord_to_nearest_track(vm_layer, vdd1.middle))\n",
"\n",
" # connect VDD of each block to vertical M5\n",
" vdd0 = self.connect_to_tracks(vdd0, vdd0_tid)\n",
" vdd1 = self.connect_to_tracks(vdd1, vdd1_tid)\n",
" # connect M5 VDD to top M6 horizontal track\n",
" vdd_tidx = self.grid.get_num_tracks(self.size, top_layer) - 1\n",
" vdd_tid = TrackID(top_layer, vdd_tidx)\n",
" vdd = self.connect_to_tracks([vdd0, vdd1], vdd_tid)\n",
"\n",
" # connect vmid using vertical track in the middle of the two templates\n",
" mid_tid = TrackID(vm_layer, self.grid.coord_to_nearest_track(vm_layer, x0, unit_mode=True))\n",
" vmid = self.connect_to_tracks([vmid0, vmid1], mid_tid)\n",
"\n",
" # add pins on wires\n",
" self.add_pin('vmid', vmid, show=show_pins)\n",
" self.add_pin('VDD', vdd, show=show_pins)\n",
" self.add_pin('VSS', vss, show=show_pins)\n",
" # re-export pins on subcells.\n",
" self.reexport(cs_inst.get_port('vin'), show=show_pins)\n",
" self.reexport(cs_inst.get_port('vbias'), net_name='vb1', show=show_pins)\n",
" self.reexport(sf_inst.get_port('vout'), show=show_pins)\n",
" self.reexport(sf_inst.get_port('vbias'), net_name='vb2', show=show_pins)\n",
"\n",
" # compute schematic parameters.\n",
" self._sch_params = dict(\n",
" cs_params=cs_master.sch_params,\n",
" sf_params=sf_master.sch_params,\n",
" )\n",
"\n",
"\n",
"import os\n",
"\n",
"# import bag package\n",
"import bag\n",
"from bag.io import read_yaml\n",
"\n",
"# import BAG demo Python modules\n",
"import xbase_demo.core as demo_core\n",
"\n",
"# load circuit specifications from file\n",
"spec_fname = os.path.join(os.environ['BAG_WORK_DIR'], 'specs_demo/demo.yaml')\n",
"top_specs = read_yaml(spec_fname)\n",
"\n",
"# obtain BagProject instance\n",
"local_dict = locals()\n",
"if 'bprj' in local_dict:\n",
" print('using existing BagProject')\n",
" bprj = local_dict['bprj']\n",
"else:\n",
" print('creating BagProject')\n",
" bprj = bag.BagProject()\n",
"\n",
"demo_core.run_flow(bprj, top_specs, 'amp_chain_soln', AmpChain, run_lvs=True, lvs_only=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## AmpChain Schematic Generator Solution\n",
"The AmpChain schematic generation solution is shown below, evaluate it to run through the flow. Note that it uses the `amp_chain_soln` schematic template instead of the `amp_chain` schematic template you are supposed to fill out. Change `amp_chain_soln` to `amp_chain` in the `yaml_file` class variable if you wish to debug your schematic template."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"using existing BagProject\n",
"computing layout\n",
"ext_w0 = 1, ext_wend=1, ytop=2592\n",
"final: ext_w0 = 1, ext_wend=1, ytop=2592\n",
"{'s': WireArray(TrackID(layer=3, track=7, num=9, pitch=2), 1109, 1265, 0.001), 'd': WireArray(TrackID(layer=3, track=8, num=8, pitch=2), 1231, 1387, 0.001), 'g': WireArray(TrackID(layer=3, track=8, num=8, pitch=2), 915, 1071, 0.001)}\n",
"WireArray(TrackID(layer=3, track=8, num=8, pitch=2), 915, 1071, 0.001)\n",
"6.5\n",
"ext_w0 = 1, ext_wend=7, ytop=2880\n",
"ext_w0 = 2, ext_wend=9, ytop=3024\n",
"final: ext_w0 = 1, ext_wend=7, ytop=2880\n",
"creating layout\n",
"layout done\n",
"creating AMP_CHAIN schematics\n",
"running lvs\n",
"Running tasks, Press Ctrl-C to cancel.\n",
"lvs passed\n",
"lvs log is /users/erichang/projects/bag_gen/BAG2_cds_ff_mpt/pvs_run/lvs_run_dir/DEMO_AMP_CHAIN/AMP_CHAIN/lvsLog_20180906_112931rlh5cdgf\n",
"computing AMP_CHAIN_tb_dc schematics\n",
"creating AMP_CHAIN_tb_dc schematics\n",
"computing AMP_CHAIN_tb_ac_tran schematics\n",
"creating AMP_CHAIN_tb_ac_tran schematics\n",
"schematic done\n",
"setting up AMP_CHAIN_tb_dc\n",
"running simulation\n",
"Running tasks, Press Ctrl-C to cancel.\n",
"simulation done, load results\n",
"setting up AMP_CHAIN_tb_ac_tran\n",
"running simulation\n",
"Running tasks, Press Ctrl-C to cancel.\n",
"simulation done, load results\n",
"all simulation done\n",
"loading simulation data for AMP_CHAIN_tb_dc\n",
"loading simulation data for AMP_CHAIN_tb_ac_tran\n",
"finish loading data\n",
", gain=-0.4063\n",
", f_3db=9.153e+09, f_unity=1.345e+10, phase_margin=85.89\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"\n",
"import os\n",
"\n",
"from bag.design import Module\n",
"\n",
"\n",
"# noinspection PyPep8Naming\n",
"class demo_templates__amp_chain(Module):\n",
" \"\"\"Module for library demo_templates cell amp_chain.\n",
"\n",
" Fill in high level description here.\n",
" \"\"\"\n",
"\n",
" # hard coded netlist flie path to get jupyter notebook working.\n",
" yaml_file = os.path.join(os.environ['BAG_WORK_DIR'], 'BAG_XBase_demo', \n",
" 'BagModules', 'demo_templates', 'netlist_info', 'amp_chain_soln.yaml') \n",
"\n",
" def __init__(self, bag_config, parent=None, prj=None, **kwargs):\n",
" Module.__init__(self, bag_config, self.yaml_file, parent=parent, prj=prj, **kwargs)\n",
"\n",
" @classmethod\n",
" def get_params_info(cls):\n",
" # type: () -> Dict[str, str]\n",
" \"\"\"Returns a dictionary from parameter names to descriptions.\n",
"\n",
" Returns\n",
" -------\n",
" param_info : Optional[Dict[str, str]]\n",
" dictionary from parameter names to descriptions.\n",
" \"\"\"\n",
" return dict(\n",
" cs_params='common-source amplifier parameters dictionary.',\n",
" sf_params='source-follwer amplifier parameters dictionary.',\n",
" )\n",
"\n",
" def design(self, cs_params=None, sf_params=None):\n",
" self.instances['XCS'].design(**cs_params)\n",
" self.instances['XSF'].design(**sf_params)\n",
"\n",
"\n",
"import os\n",
"\n",
"# import bag package\n",
"import bag\n",
"from bag.io import read_yaml\n",
"\n",
"# import BAG demo Python modules\n",
"import xbase_demo.core as demo_core\n",
"from xbase_demo.demo_layout.core import AmpChainSoln\n",
"\n",
"# load circuit specifications from file\n",
"spec_fname = os.path.join(os.environ['BAG_WORK_DIR'], 'specs_demo/demo.yaml')\n",
"top_specs = read_yaml(spec_fname)\n",
"\n",
"# obtain BagProject instance\n",
"local_dict = locals()\n",
"if 'bprj' in local_dict:\n",
" print('using existing BagProject')\n",
" bprj = local_dict['bprj']\n",
"else:\n",
" print('creating BagProject')\n",
" bprj = bag.BagProject()\n",
"\n",
"demo_core.run_flow(bprj, top_specs, 'amp_chain', AmpChainSoln, sch_cls=demo_templates__amp_chain, run_lvs=True)"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 1
}