tachibana/test_bench/term_renderer_analysis.ipynb

223 lines
37 KiB
Text

{
"cells": [
{
"cell_type": "code",
"execution_count": 121,
"id": "weird-music",
"metadata": {},
"outputs": [],
"source": [
"import re\n",
"import contextlib\n",
"import itertools\n",
"import string\n",
"\n",
"from PIL import Image\n",
"import numpy as np\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 94,
"id": "republican-writing",
"metadata": {},
"outputs": [],
"source": [
"TC_BODY = '''\n",
"testcase_id = {tc_id};\n",
"\n",
"rst = 1;\n",
"clk = 0;\n",
"repeat(2) @(posedge clk);\n",
"rst = 0;\n",
"repeat(8) @(posedge clk);\n",
"\n",
"@(posedge clk) vsync = 1;\n",
"for (integer y=0; y<{h}; y=y+1) begin\n",
" for (integer x=0; x<{w}; x=x+1) begin\n",
" @(posedge clk) hsync = 1;\n",
" end\n",
" repeat(5) @(posedge clk) hsync = 0;\n",
"end\n",
"repeat(100) @(posedge clk) vsync = 0;\n",
"\n",
"$writememh(\"test_term_fb_dump_{tc_id}.hex\", data_recording, 0, ({w}+5) * {h} + 100);\n",
"'''\n",
"\n",
"TESTCASES = [\n",
" (32, 32),\n",
" (100, 20),\n",
" (92, 97),\n",
" (400, 400),\n",
"]\n",
"\n",
"def write_testcases():\n",
" with open('test_data/00TERM_RENDERER_TC_IDX.v', 'w') as f, contextlib.redirect_stdout(f):\n",
" for tc_id, (w, h) in enumerate(TESTCASES):\n",
" print(TC_BODY.format(tc_id=tc_id, w=w, h=h))\n",
" \n",
"write_testcases()"
]
},
{
"cell_type": "code",
"execution_count": 109,
"id": "drawn-width",
"metadata": {},
"outputs": [],
"source": [
"def read_hexfile(filename):\n",
" with open(filename) as f:\n",
" gen = ((int(line, 16) if re.match(r'^[0-9a-f]+$', line) else 0) for line in f if line.strip())\n",
" return np.array([ ((p>>16)&0xff, (p>>8)&0xff, p&0xff) for p in gen ])[:-1]\n",
"\n",
"def display_image(filename, w, h, **kwargs):\n",
" w_blanked = w+5\n",
" img = read_hexfile(filename).astype(np.uint8)[8+1:][:h*w_blanked].reshape((h, w_blanked, 3))\n",
" #fig, ax = plt.subplots(**kwargs)\n",
" #ax.imshow(img, interpolation='None')\n",
" return Image.fromarray(img)"
]
},
{
"cell_type": "code",
"execution_count": 111,
"id": "structured-imaging",
"metadata": {},
"outputs": [],
"source": [
"def show_tc(tc_id, **kwargs):\n",
" w, h = TESTCASES[tc_id]\n",
" return display_image(f'../Artix-7-HDMI-processing.sim/sim_1/behav/xsim/test_term_fb_dump_{tc_id}.hex', w, h, **kwargs)"
]
},
{
"cell_type": "code",
"execution_count": 160,
"id": "outstanding-abraham",
"metadata": {},
"outputs": [],
"source": [
"with open('test_data/test_glyphmem_data.hex', 'w') as f:\n",
" for row in range(128):\n",
" for col, c in enumerate(itertools.islice(itertools.cycle(string.printable), row, row+256)):\n",
" underline = bool(row&1)\n",
" bold = bool(row&2)\n",
" bgcolor = max(0, col%24-8) if col//24%2 == 1 else 0\n",
" fgcolor = 0 if col//24%2 == 1 and col%24 > 8 else (7 if col%24<8 else col%24-8)\n",
" code = (int(underline)<<19) | (int(bold)<<18) | (bgcolor<<12) | (fgcolor<<8) | ord(c)\n",
" print(f'{code:05x}', file=f)"
]
},
{
"cell_type": "code",
"execution_count": 172,
"id": "immune-checkout",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAACUAAAAgCAIAAAAaMSbnAAAA90lEQVR4nO1WwQ3DMAh0Ks+TVwfoKtmiUt6RskVX7SMSohgumLpIrcrLIZgDzgZP8/VWEuWSCVZKqfxj2VdaP+6bMF32VSgte+CnciOxx3KB7bEfVz3bzMKi44lsVDArAhxZbVVHNm0BgQBqTf6snQEwDoP4GwUG5AVvCBgmIn7fY4d24v3Mc3/pV5sH50z1I/ESJLt//vG+G8/sn0JDa+ecs7wp/RNvcM45y9u7/ROI6u28f8bmnBW6wl+XF3XOgTp14DnnHCbFi9dFLRhJLjzr7Hn4Ftjn933sodXfu8dCnWekF28qZ0w/Ov+oElV8f0io2tn1fAJMBbkaUxYHBgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<PIL.Image.Image image mode=RGB size=37x32 at 0x7F3932624D90>"
]
},
"execution_count": 172,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"show_tc(0)"
]
},
{
"cell_type": "code",
"execution_count": 171,
"id": "tight-brand",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAGkAAAAUCAIAAAABXIRyAAABfUlEQVR4nO2YMQ7CMAxFU9QVBiQkpg6MDEwcgFPAzC2QOiNxC2Z6IEYGJiQkBrgAQyRjnMR13VBAypucYJz0N07iZrP5wiRU9L49gT8mx431rgR7v9kS1/WuJJ0hfz4OiYadmVDQyft76Q+GYD/uN965mEzPpyPvY3lpR6Rxm+SfIX8+jjdarb6MszsxQn8wxHqRZhtEOet9BjXCaHEH/QS5t1eyLkIPxj/wV15DiNG4APt6OYNdTKZg4/ytqoM1lsuV8WpnJ1SbC+5fSI81avPXtNs324D1Go0LaGK9YPurqoOVDKDaKd4kvyuF9kHX043G6y6c6uN+w2cFBq87BfScjSIc49woeCzIWWENvNCMSsc37aIIJ19fjcYSjtIl+rtxrNl3uRgjXlCMMRmuySR7NvzE3FEb3Y2F4+o2OwvkKRGO5KlNYXzIGvaczVI9qybVs3qSdnqSdnqSdnqSdnqC9SzpAfsXvtNFqXNJXaHAU8+6PT/1nU4ybjc8AfzHHaob9pe4AAAAAElFTkSuQmCC\n",
"text/plain": [
"<PIL.Image.Image image mode=RGB size=105x20 at 0x7F3932624640>"
]
},
"execution_count": 171,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"show_tc(1)"
]
},
{
"cell_type": "code",
"execution_count": 170,
"id": "signed-pursuit",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAGEAAABhCAIAAABJZFj0AAAEqElEQVR4nO2dPU5cMRDHTUSRRIECCYlqC0qKVDlArrK3iEQdiVtwq5QpqJCQKOACKbwZZsfzZT/vWxvmV/l5vX7e4c3Y/j/bnHz/8TMFKp+O3YAJOMUX27tbSN//+k2Kbu9uSaZUXq+H1IYLK1VBpl6e5ez8AtKvL8964c31zcPfPzjnzUbEBOUlqUsqr9fD1mbaUSlcNoxwdn6B7UIuPbh8jW1rM87a+t50CadsrufvLP0A/YcdxdwSl1cbSD89PkB6c32TE9npGBvlG5vPcPkVkpMTpt+lZXFtCdgul1cbuBTjETSrtjV61JDiVFmyrE23r7Opry/POGZj8HOkQPu1LgZSCldV3gsSs3MCPzhJtdeejboYyP+8VN3LeZdD0D6G7NXKNR+uho4/pXSC5yKe2AkfKWO5qjGk875twSgD/kUMRPwrux50aul/8D6J+ZpJzNdswkY2YSObsJFN2MhGnK+RHEiPoBN1mceRcbYCM18rc4bSiTz37cuer31wnUjCnq+9A51I0mrb9SOFEXQiom055RFI4ykbqx9perbJIDpRQzyS9CMnXhtNoROxlJp/bQ0uG30QnUjCHkPOqBP1RdSP0sA6UW3MJv6VXY8VjzKkXwv9yCbmayLwNO1i9rzBIiN5nNSLff76jc3/gvJhlBS+ZhO+ZhM2stlbW4M/kHQcZSImrRJQ+n6l/JL2ADkeNbxTw+ziEfxI3A74zWU+rgJPa9kCynelMkvag+lio6W+5uwQPQYalp2vNYtESXaxWg5nR1Y/ksbZ5XtaXs9OjrmC6VakvJJfku3ea/0R2OXs/CLLANlAYJfLq03Wj7KBiH5Ex0f6H7M2LvjL6wXwpf7ugEDiEVwSGwGsjZh1tYPrRMpijQNB+362z/K/tGhj8Ii+69d6tZIEkYPS0bI5Hkmf7o2PCPpYDqPEC8/YTx92KfU0KNkN/VrMaW1ivmYTNrIJG9mEjWzCRja2foQZVidaiDQ1yRj6ES46sk60EN1GXl/7CDqRhKEfZYbSiWp9kH1Jm+RNNIZ+NIVORG6kL0cotRFJP8oJl34E9041cWFNnWiJfgSwNpI0Nu/aGk+xvrAPJmvT7vBr/UInwpDnqHEMOalOlONR7bfe4tEsOlFVPEo1/VrsX2sn5msisf4o1h91JXzNJmxkI46ztyvuO6uar+kTNJOGLf7t59YkobnS8Gcr7POQ8o8LnrgxvuZs5SA/ZgU6nFujsLC2Lr6Z5BEAu38Nj7MzrnNrurT1vn7fmeSDVb4p7Tsqz63Jl9m/sKXE89ikH+Nvqx5o4FKRNwcZ2Yo65JpIUtGhlxpVnxHVXSoaP6I796679q8tboyXMS1ra7VSrK2NwUr5ciBalsdU3Vc6j+3p8UHal02IOa1NzNdswkY2YSObsJFN2MhGXH+UJteJ/MAIQOr+XeeMvmOdyHNS1HrnRMxL3dk+EivrREv0o/I9bbmITTv/aAqdqNZnpbPqs1FKX9POP5pUJ1ohDvTxNSfH0olWOiNKYoqI3m1f9qQ60QrNrj4/Ww9Gzno8S5DMdUxsVSzK/2Bhx0dx/lE1MV8TifVH9vojIHzNJnzN5h+fL/vKYArbwwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<PIL.Image.Image image mode=RGB size=97x97 at 0x7F39326242B0>"
]
},
"execution_count": 170,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"show_tc(2)"
]
},
{
"cell_type": "code",
"execution_count": 169,
"id": "romantic-missouri",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<PIL.Image.Image image mode=RGB size=405x400 at 0x7F3932624400>"
]
},
"execution_count": 169,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"show_tc(3)"
]
}
],
"metadata": {
"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.9.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}