From WikiChip
Difference between revisions of "User talk:David"

(Spam)
m (Opensource mSLDev)
 
(One intermediate revision by one other user not shown)
Line 71: Line 71:
 
I would also appreciate this! (sroelse)
 
I would also appreciate this! (sroelse)
  
 +
Any update on this? You have never responded.
  
 
== High Resolution Pictures ==
 
== High Resolution Pictures ==
Line 108: Line 109:
  
 
<source lang="Lua">
 
<source lang="Lua">
function append_packaging_data(infobox, arg_name, pdata)
+
[...]
    local package_name = origArgs[arg_name]
+
</source>
    if not package_name or package_name == '' then return end
 
 
 
    -- Reject unexpected input, esp. smw.ask operators []:|?*~
 
    -- Should display error msg
 
    if mw.ustring.find(package_name, '[^%w %-+._,/]') then return end
 
 
 
    local package_location, info, result = {}
 
    local page_name = package_name
 
    for field in string.gmatch(package_name, "([^,]+),?") do
 
        table.insert(package_location, field)
 
    end
 
    if #package_location > 1 then
 
        page_name = package_location[1] .. '/packages/' .. package_location[2]
 
        info = pdata['packages'][package_location[1]][package_location[2]]
 
    end
 
    if mw.smw then
 
        result = mw.smw.ask('[[Category:all ic packages]][[' .. page_name .. ']]' ..
 
            '|?package|?package type|?package pins|?package pitch' ..
 
            '|?package length|?package width|?package height|?socket')
 
    end
 
    local dim_props = {'package length', 'package width', 'package height'}
 
    if type(result) == 'table' and #result >= 1 and result[1]['package'] then
 
        info = result[1]
 
    else
 
        if not info then return end -- should display error msg
 
        page_name = nil
 
        for i, name in ipairs(dim_props)
 
            do info[name] = info.p_size and info.p_size[i] or nil end
 
    end
 
  
    local function tabled(x) return type(x) == 'table' and x or { x } end
+
Of course it would help if [[Module:package]], which already accepts the required data as parameters, would set corresponding package and socket properties, as below for instance. Note the example adds a missing 'package pitch 2' parameter and limits 'package dimension' to three values rather than ten. The proposed property names were already used in subobjects by templates like [[Template:packages/cavium/fcbga-1217]] invoked by the obsolete Module:chip 'package module' parameter. I would prefer a property 'package contacts' over 'package pins' though. Regrettably most of these properties are currently undefined and default to type Page <span class="plainlinks">([https://en.wikichip.org/w/index.php?title=Special%3AProperties&property=package 1] [https://en.wikichip.org/w/index.php?title=Special%3AProperties&property=socket 2])</span> so they won't display nicely. For another obstacle on Wikichip property page changes do not seem to enter the SMW database voluntarily. Take for instance [[Property:l1$ size]] which requests to be displayed in KiB but shows MiB, or [[Property:integrated gpu execution units]] which is typed as Number but still defaults to Page. Also package properties may not enter the database immediately even if listed in a package page fact box, a [[Special:Ask/-5B-5BCategory-3Aall-20ic-20packages-5D-5D/-5B-5Bamd-2Fpackages-2Fsocket_sp5-5D-5D/-3Fpackage/-3Fpackage-20type/-3Fpackage-20pins/-3Fpackage-20pitch/-3Fpackage-20length/-3Fpackage-20width/-3Fpackage-20height/-3Fsocket|manual query]] will show the problem.
    local function show(label, text)
 
        if not text or text == '' then return end
 
        infobox:node(p.add_entry(label, mw.html.create('td'):wikitext(text)))
 
    end
 
    local function param(a)
 
        local prop_names = unpack(a)
 
        local text, sep = '', ''
 
        for i, prop_name in ipairs(tabled(prop_names)) do
 
            local values = info[prop_name] -- single value or table
 
            if values then
 
                local n_values = 0
 
                for j, value in ipairs(tabled(values)) do
 
                    if value and value ~= '' then
 
                        if a.set_prop then p.set_val(a.set_prop, value) end
 
                        text = text .. sep .. value
 
                        sep = a.sep or ', '
 
                        n_values = n_values + 1
 
                        if n_values >= (a.max_values or 1) then break end
 
                    end
 
                end
 
            end
 
        end
 
        return text
 
    end
 
    local p_type_text, p_type_abbr = param{{'package type', 'p_type'}}, ''
 
    if p_type_text ~= '' and mw.ustring.len(p_type_text) <= 10 then
 
        p_type_abbr = ' (' .. p_type_text .. ')'
 
        p_type_text = ''
 
    end
 
    local p_name = param{{'package', 'p_name'}, set_prop='package', max_values=10}
 
    if p_name ~= '' then
 
        if page_name then p_name = '[[' .. page_name .. '|' .. p_name .. ']]' end
 
        show('Package', p_name .. p_type_abbr)
 
    end
 
    show('Package Type', p_type_text)
 
    show('Dimension', param{dim_props, sep=' × '})
 
    show('Pitch', param{{'package pitch', 'p_pitch'}, max_values=2, sep=' × '})
 
    show('Contacts', param{{'package pins', 'p_contacts'}})
 
    show('Socket', param{{'socket', 'p_socket'}, set_prop='socket', max_values=10})
 
end
 
</source>
 
  
In the main function:
 
 
<source lang="Lua">
 
<source lang="Lua">
    [...]
+
[...]
    -- Packaging
 
    local has_arg_pkg_name = has_arg('package name') or has_arg('package name 1')
 
    if has_arg('package module 1') or has_arg_pkg_name or has_arg('back image') then
 
        p.add_separator(infobox, 'Packaging')
 
    end
 
 
 
    if has_arg_pkg_name then
 
        local pdata = require('Module:packaging data')
 
        -- Also accept name, name 2, name 3 for consistency.
 
        append_packaging_data(infobox, 'package name', pdata)
 
        for i = 1, 10 do
 
            append_packaging_data(infobox, 'package name ' .. i, pdata)
 
        end
 
    end
 
    [...]
 
 
</source>
 
</source>
  
Of course it would help if [[Module:package]], which already accepts the required data as parameters, would set corresponding package and socket properties, as below for instance. Note the example adds a missing 'package pitch 2' parameter and limits 'package dimension' to three values rather than ten. The proposed property names were already used in subobjects by templates like [[Template:packages/cavium/fcbga-1217]] invoked by the obsolete Module:chip 'package module' parameter. I would prefer a property 'package contacts' over 'package pins' though. Regrettably most of these properties are currently undefined and default to type Page <span class="plainlinks">([https://en.wikichip.org/w/index.php?title=Special%3AProperties&property=package 1] [https://en.wikichip.org/w/index.php?title=Special%3AProperties&property=socket 2])</span> so they won't display nicely. For another obstacle on Wikichip property page changes do not seem to enter the SMW database voluntarily. Take for instance [[Property:l1$ size]] which requests to be displayed in KiB but still shows MiB, or [[Property:integrated gpu execution units]] which is typed as Number but still defaults to Page. Also package properties may not enter the database immediately, a [[Special:Ask/-5B-5BCategory-3Aall-20ic-20packages-5D-5D/-5B-5Bamd-2Fpackages-2Fsocket_sp5-5D-5D/-3Fpackage/-3Fpackage-20type/-3Fpackage-20pins/-3Fpackage-20pitch/-3Fpackage-20length/-3Fpackage-20width/-3Fpackage-20height/-3Fsocket|manual query]] will show the problem.
+
Kind regards, [[User:QuietRub|QR]] ([[User talk:QuietRub|talk]]) 03:47, 13 March 2023 (EDT)
  
<source lang="Lua">
+
: Thanks for the admin rights. I made the proposed changes, seems to work as planned. May I suggest an infobox class for Module:chip, core, microarchitecture, and package? They duplicate a lot of code, it could be more readable, and shared code would promote a common appearance. For instance core and package use in-text annotations to set properties, so e.g. [[amd/cores/milan]] displays a warning about the "7 nm+" process using an unknown unit. SMW also displays conversion pop-ups for quantity properties, perhaps useful to compare metric and customary units like inches or mils. Module:chip and microarchitecture use #set exclusively, so [[apple/ax/a12x]] has no pop-ups and is quiet about several improper values and why 'base frequency' is not set. Well an infobox class taking care of such details could do either and switch easily. [[User:QuietRub|QR]] ([[User talk:QuietRub|talk]]) 02:36, 2 April 2023 (EDT)
    [...]
 
    p.add_separator(infobox, 'General Info')
 
  
    local function entry(a)
+
== Semantic citations ==
        local label, arg_name = unpack(a)
+
What is your opinion on semantic citations? Citations are useful to track obscure facts or record documents which may be of interest to other researchers, but one has to look up document details (title, author, publication date, URL, etc.) every time, corrections on multiple pages e.g. when the URL changes are laborious, and long references clutter up the page. Semantic citations would keep all the details in semantic properties on one page and use a query to insert them on other pages.
        if not has_arg(arg_name) then return end
 
        local function text(i, value)
 
            local prop_name = a.prop_name or arg_name -- {} for none
 
            if type(prop_name) == 'table' then
 
                if i > #prop_name then
 
                    if a.print then return a.print(value) end
 
                    return value
 
                end
 
                prop_name = prop_name[i]
 
            end
 
            return '[[' .. prop_name .. '::' .. value ..
 
                (a.print and ('| ]]' .. a.print(value)) or ']]')
 
        end
 
        local td = mw.html.create('td'):wikitext(text(1, arg(arg_name)))
 
        for i = 2, (a.max_args or 1) do
 
            local value = origArgs[arg_name .. ' ' .. i]
 
            if not value or value == '' then break end
 
            td:wikitext((a.sep or ', ') .. text(i, value))
 
        end
 
        if label then infobox:node(p.add_entry(label, td)) end
 
        return td
 
    end
 
    local function link(s) return '[[' .. mw.ustring.lower(s) .. '|' .. s .. ']]' end
 
  
    local uarch_link
+
There is a promising [https://www.mediawiki.org/wiki/Extension:Semantic_Cite Semantic Cite extension], however it comes with downsides such as not being installed on Wikichip, using admin-only pages to control its operation, enforcing conventions like having a single list of references at the bottom of the page (unlike e.g. {{amd|CPUID}}), and not cooperating with the Cite extension so if documents outside the SMW database are referenced one may end up with two reference tables. Fortunately something similar can be implemented using basic SMW features and templates:
    if has_arg('designer') then
 
        uarch_link = function(s) return '[[' .. mw.ustring.lower(arg('designer') ..
 
            '/microarchitectures/' .. s) .. '|' .. s .. ']]' end
 
        local td = entry{nil, 'designer', max_args=10, print=link}
 
        infobox:node(p.add_entry('Designer', td:attr('style', 'width: 99%;')))
 
    end
 
  
    if has_arg('first launched') or has_arg('first announced') then
+
Each citable document has a page which sets properties containing the document details. That could be a File: page although for copyright reasons I would expect more often an ordinary, very short page with an external link to the document. Another option, not mutually exclusive, is to store details in one subobject per document. Subobjects can be placed on pages listing documents in any number, and a template can help structure the data. Subobjects have no name or category but a query can find "citation resource" subobjects because they all set a citation_key property. The key is one way to retrieve document data, and a suitable template can format it. A less taxing option is to format the citation at the source, a side effect of the subobject template, and store the output in a citation_text property. A Template:cite would simply insert the retrieved citation_text in a page, e.g. in the bibliography section. A Template:citeref can create a reference by adding &lt;ref> tags. Document tables could be produced in the same way as chip tables, with free text search in titles or keywords, the subobject template setting additional properties as needed. [[User:QuietRub|QR]] ([[User talk:QuietRub|talk]]) 02:36, 2 April 2023 (EDT)
        local release, sep = mw.html.create('td'), ''
 
        if has_arg('first announced') then
 
            release:wikitext('[[first announced::' .. arg('first announced') .. ']] (announced)')
 
            sep = '<br/>'
 
        end
 
        if has_arg('first launched') then
 
            release:wikitext(sep .. '[[first launched::' .. arg('first launched') .. ']] (launched)')
 
        end
 
        infobox:node(p.add_entry('Introduction', release))
 
    end
 
 
 
    entry{'Market', 'market', max_args=5, prop_name='market segment'}
 
    entry{'Microarchitecture', 'microarch', max_args=10,
 
        prop_name='microarchitecture', print=uarch_link}
 
    entry{'Chipset', 'chipset', max_args=10}
 
    entry{'<abbr title="Thermal Design Power">TDP</abbr>', 'tdp', max_args=10}
 
 
 
    if has_arg('package name') or has_arg('package type') then
 
        p.add_separator(infobox, 'Package')
 
        entry{'Name', 'package name', max_args=10, prop_name='package', sep=',<br/>'}
 
        entry{'Type', 'package type'}
 
        entry{'Contacts', 'package contacts', prop_name='package pins'}
 
        entry{'Dimension', 'package dimension', max_args=3, sep=' × ',
 
            prop_name={'package length', 'package width', 'package height'}}
 
        entry{'Pitch', 'package pitch', max_args=2, sep=' × '}
 
    end
 
 
 
    if has_arg('socket name') or has_arg('socket type') then
 
        p.add_separator(infobox, 'Socket')
 
        entry{'Name', 'socket name', prop_name='socket', max_args=10, sep=',<br/>'}
 
        entry{'Type', 'socket type', prop_name={}}
 
    end
 
    [...]
 
</source>
 
 
 
Kind regards, [[User:QuietRub|QR]] ([[User talk:QuietRub|talk]]) 03:47, 13 March 2023 (EDT)
 

Latest revision as of 19:15, 19 March 2024

Adding Ampere Altra processor[edit]

Hi David, may you add the Ampere Altra processor please ?

ref: https://d1o0i0v5q5lp8h.cloudfront.net/ampere/live/assets/documents/Altra_Rev_A1_PB_v1.35_20220728.pdf

reintroducing sidebar menu[edit]

Hi I see you've been trying to fix the sidebar extension so that it works for 1.25. If you need any help I can provide assistance! --Jonathan (talk) 12:31, 14 November 2015 (EST)

I've got it covered for now, thanks! I think I'll upload the source to githup seeing how the extension has not been maintained for 1.24+. Might be useful for other wikis. --David (talk) 17:04, 16 November 2015 (EST)

Who are we?[edit]

Hi David, how long has this site been around without me noticing it? I found it today when googling for an old chip I found in a drawer at work, the MB8855. I have previously been involved in the ChipDir-project which seems to have faded away, as well as in the HardwareBook. I will come back here and dump a lot of missing info I guess! --Uwezi (talk) 07:03, 28 February 2017 (EST)

Hey Uwe,
Awesome that you found us! It's always great to meet people who share similar interests. We started the site a few years ago, but it wasn't until last year that we really started getting the ball rolling with an attempt to detail all those old chips that have been pretty much been forgotten as well as some of the new stuff (most recently Zen/Kaby Lake). We being myself and a few friends who are also engineers in the field who have great passion for those chips/systems. We are currently trying to at least document the various chip families from each company. I've also been trying to get my hand on some old databooks so they could be digitized. So welcome to WikiChip! --David (talk) 12:03, 28 February 2017 (EST)

Email verification not working (2017Q1)[edit]

Hi David,

Email verification doesn't seem to be working: 'Unknown error in PHP's mail() function.' I tried stripping out the comment characters (which trip up some email address regexes) as well as resetting the address - both of attempts yielded the same error message. --Chipocalypse (talk) 16:03, 27 March 2017 (EDT)

Hi, thanks for letting me know. I think it should be fixed now. Looks like it was broken configs from when I upgraded recently. --David (talk) 18:27, 27 March 2017 (EDT)

SSL Cert expiring[edit]

Hey David, just a heads up the SSL Cert is about to expire! --At32Hz (talk) 13:57, 3 June 2017 (EDT)

It's been renewed. Thanks! --David (talk) 23:07, 3 June 2017 (EDT)

Telling google not to index parts of a page[edit]

Hey David, I need to not to index some of the mIRC pages (like the index templates such as https://en.wikichip.org/wiki/Template:mIRC_identifier_list ) in order to stop google coming up with every identifier page when you search for a specific identifier. To do this I need to insert specific HTML googleoff and googleon comments as per https://perishablepress.com/tell-google-to-not-index-certain-parts-of-your-page/ . How do I do this? Sophist (talk) 18:14, 2 October 2017 (EDT)

I thought I've done that. Let me double check. --David (talk) 18:35, 2 October 2017 (EDT)
Looks like I only had talk pages not indexed, I've extended it to template pages too. So Template:mIRC_identifier_list should not be indexed anymore either now. This is applied site-wide. --David (talk) 21:36, 2 October 2017 (EDT)
What I was intending is NOT the same as NOINDEX. NOINDEX applies to the whole page. What I am trying to do is exclude specific parts of the page (i.e. the bits that are repeated on every page) from the index. Sophist (talk) 03:18, 3 October 2017 (EDT)
ah just part of page. Unfortunately that's not possible. I don't think there is any way to cloak part of the page. Btw googleon/googleoff only works for custom google searches (like if someone embeds it in their website), it doesn't work for google.com itself. As a side note, comments get stripped by MediaWiki so no one can see them because they won't show up in the HTML on the site.
Is it really a big problem? Seems google is good enough to understand those links are repeated at every page and ignore them. Like if you search for "mirc $XXXXX identifier" I get the right page every time? --David (talk) 10:52, 3 October 2017 (EDT)
You can do it (for google at least) using HTML comments containing googleon and googleoff. But I am unable (or don't know how) to include html comments in the wiki generated html. Sophist (talk) 11:10, 3 October 2017 (EDT)
googleon/googleoff only works for Google Search Appliance (https://www.google.com/support/enterprise/static/gsa/docs/admin/70/gsa_doc_set/admin_crawl/preparing.html#1076243) it's not meant for google search bot/google.com search engine. See the comment on the link of the page you provided too --David (talk) 16:29, 3 October 2017 (EDT)

Thinking laterally (and I am not talking about moving the conversation back to left-margin), how about using user agent strings to exclude certain content - so when it's the googlebot or bingbot then you don't include these sorts of templates. Sophist (talk) 17:23, 3 October 2017 (EDT)

Can no longer make edits.[edit]

The wiki only allows me to edit discussion pages. Any text on a page edit informs me that it's an external web address, and discards my edit. - Raccoon (talk) 02:02, 13 August 2018 (EDT)

Is it still happening? --David (talk) 23:33, 22 September 2019 (EDT)
In my preferences was ru language. I select en, and edit now work. Thanks for this website. Oleg3280 (talk) 10:20, 12 October 2019 (EDT)

Templates?![edit]

Hi David, are there any templates available? Was thinking of starting a series of pages about Intel's Core 2 Duo line but it would take me forever to write one page without a template. --188.240.26.38 08:49, 8 June 2020 (EDT)


Opensource mSLDev[edit]

Can you put msldev on github/bitbucket/gitlab/whatever? Please? I'd like to try to get it to work on newer commands, identifiers, and events. Thanks.

I would also appreciate this! (sroelse)

Any update on this? You have never responded.

High Resolution Pictures[edit]

Hello David, I just came across wikichip.org. Great site! Keep it up! I directly bookmarked it to stop by here and there. Quick question, do you have a high resolution picture of the eyeq5 PCB from BMW, that you showed here: https://en.wikichip.org/w/images/a/a1/mobileye_eyeq5_bmw_2021_board.jpg I am interested in seeing more details on the traces and the single components of this PCB. (It's a pity, that the manufacturer don't print details on their ceramic capacitors :)) Best Regards, Sam 217.229.171.177 03:45, 21 September 2021 (EDT)

Hi there. Sorry, this isn't my photo (which is why the resolution is fairly low). It happens to be a photo provided by Intel/Mobileye itself so that's the resolution it came at originally (we don't downscale photos). --David (talk) 08:26, 21 September 2021 (EDT)
Hi David, alright. That's unfortunate. Thanks for getting back! Sam 217.229.171.177 05:21, 29 September 2021 (EDT)

Properties[edit]

Hi David, when I edit declarative properties on a Property: page the changes don't take effect. QuietRub (talk) 20:15, 9 November 2021 (EST)

4LPE and 5LPE design rules[edit]

Hi David, I just fixed an apparent error in https://en.wikichip.org/wiki/5_nm_lithography_process but since I don't have original sources or first-hand data on 4LPE/5LPE design rules, and the tables don't cite any sources either, I would suggest you check the edit and add sources for 4LPE/5LPE design rules (and other processes, time permitting) used when making this page.

Edit: https://en.wikichip.org/w/index.php?title=5_nm_lithography_process&type=revision&diff=100069&oldid=99958

With kind regards, AM.

Spam[edit]

Hi David, You're probably aware of this but there's a severe spam problem. I've been reverting it when I spot it, some are very subtle changes to articles that are just weird but it's getting worse. Please respond here with what you end up doing and so I can make an account before you close off IP access (if you use that tool) - if not just make sure you patrol and watch every page basically. Good luck

90.219.59.92 23:58, 10 March 2023 (EST)


Much of the recent spam is very subtle changes and I have no idea how to deal with it unfortunately (other than blocking out large swaths of IP addresses/subnets). If you want to create an account, I can temporarily open it up so you can register. --David (talk) 11:50, 15 March 2023 (EDT)

Module:packaging data[edit]

Hi David. Module pages on Wikichip are not editable by mere mortals and as of 2023-03-13 Module:packaging data is missing entries for AMD socket AM5 and SP5, maybe you could add those? This also exposes a bug in Module:chip and Module:core, which is getting in the way of editing pages referencing those sockets, where they attempt to access package_info fields without checking if this came up nil:

local package_info = pdata['packages'][package_location[1]][package_location[2]]

Alternatively I propose Module:chip and Module:core try to retrieve that data from the SMW database and also link to a package page if one exists, example below. You will notice the code accepts a page name like "amd/packages/socket am4" in addition to "vendor,name" which I think beats guessing names in the pdata table. In fact even "Socket AM4" would work in this case because that happens to be a redirect to that page.

[...]

Of course it would help if Module:package, which already accepts the required data as parameters, would set corresponding package and socket properties, as below for instance. Note the example adds a missing 'package pitch 2' parameter and limits 'package dimension' to three values rather than ten. The proposed property names were already used in subobjects by templates like Template:packages/cavium/fcbga-1217 invoked by the obsolete Module:chip 'package module' parameter. I would prefer a property 'package contacts' over 'package pins' though. Regrettably most of these properties are currently undefined and default to type Page (1 2) so they won't display nicely. For another obstacle on Wikichip property page changes do not seem to enter the SMW database voluntarily. Take for instance Property:l1$ size which requests to be displayed in KiB but shows MiB, or Property:integrated gpu execution units which is typed as Number but still defaults to Page. Also package properties may not enter the database immediately even if listed in a package page fact box, a manual query will show the problem.

[...]

Kind regards, QR (talk) 03:47, 13 March 2023 (EDT)

Thanks for the admin rights. I made the proposed changes, seems to work as planned. May I suggest an infobox class for Module:chip, core, microarchitecture, and package? They duplicate a lot of code, it could be more readable, and shared code would promote a common appearance. For instance core and package use in-text annotations to set properties, so e.g. amd/cores/milan displays a warning about the "7 nm+" process using an unknown unit. SMW also displays conversion pop-ups for quantity properties, perhaps useful to compare metric and customary units like inches or mils. Module:chip and microarchitecture use #set exclusively, so apple/ax/a12x has no pop-ups and is quiet about several improper values and why 'base frequency' is not set. Well an infobox class taking care of such details could do either and switch easily. QR (talk) 02:36, 2 April 2023 (EDT)

Semantic citations[edit]

What is your opinion on semantic citations? Citations are useful to track obscure facts or record documents which may be of interest to other researchers, but one has to look up document details (title, author, publication date, URL, etc.) every time, corrections on multiple pages e.g. when the URL changes are laborious, and long references clutter up the page. Semantic citations would keep all the details in semantic properties on one page and use a query to insert them on other pages.

There is a promising Semantic Cite extension, however it comes with downsides such as not being installed on Wikichip, using admin-only pages to control its operation, enforcing conventions like having a single list of references at the bottom of the page (unlike e.g. CPUID), and not cooperating with the Cite extension so if documents outside the SMW database are referenced one may end up with two reference tables. Fortunately something similar can be implemented using basic SMW features and templates:

Each citable document has a page which sets properties containing the document details. That could be a File: page although for copyright reasons I would expect more often an ordinary, very short page with an external link to the document. Another option, not mutually exclusive, is to store details in one subobject per document. Subobjects can be placed on pages listing documents in any number, and a template can help structure the data. Subobjects have no name or category but a query can find "citation resource" subobjects because they all set a citation_key property. The key is one way to retrieve document data, and a suitable template can format it. A less taxing option is to format the citation at the source, a side effect of the subobject template, and store the output in a citation_text property. A Template:cite would simply insert the retrieved citation_text in a page, e.g. in the bibliography section. A Template:citeref can create a reference by adding <ref> tags. Document tables could be produced in the same way as chip tables, with free text search in titles or keywords, the subobject template setting additional properties as needed. QR (talk) 02:36, 2 April 2023 (EDT)